![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.12.2009
Сообщений: 26
|
![]()
Задача такая, есть несколько файлов, текстовых и графических, которыми пользуется программа. Соответственно их изменение приведет к некорректной ее работе. Хочу сделать простенькую защиту от этого на основе проверки контрольной суммы. Смысл такой, при запуске, программа проверяет контрольную сумму нужных файлов, сравнивает значение с эталонным и в зависимости от этого либо отказывается дальше работать, либо нет.
Нашел такой вот код: Код:
Ну и до кучи, насколько сложно будет обмануть такую "систему". То есть, если кто-нибудь злой, например, в текстовом файле поменяет одно слово (или одну букву), отразится ли это на контрольной сумме? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
есть классический crc32. работать будет.. ну теоретически на любом x86. Вызывать checksum := CRC32($FFFFFFFF, data, len);
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Честно говоря, не знаю как работает приведенный вами подсчет хеша, но вот есть неплохой md5 хеш. Почему не воспользоваться им? Его уж точно не ломанет простой пользователь без хоть каких-либо знаний в программировании
![]() Вычисление хеш-суммы MD5
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#4 | ||
Пользователь
Регистрация: 07.12.2009
Сообщений: 26
|
![]() Цитата:
Цитата:
Последний раз редактировалось Haladdin; 12.01.2011 в 00:48. |
||
![]() |
![]() |
![]() |
#5 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]() Цитата:
Если бит равен 1, то S=S+1? тогда биты 101 = английская буква e и 110 = английская буква n будут давать одинаковую сумму( а если быть точным, то ОЧЕНЬ много комбинаций будут давать правильную сумму( если изменение данных файлов во время работы программы (конечное использование, т.е. не при отладке) не планируется, то можно их засунуть в res или приписать в конец самого exe (сложнее для реализации, так как нужно будет считывать потоком)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 07.12.2009
Сообщений: 26
|
![]()
Ну, безболезненно подменить один файл, другим, да еще так чтобы сумма сошлась будет все равно довольно сложно. А главное, если не знать по какому принципу она считается. Тем более что и тут можно поднамудрить, складывая например попарно, например биты 101 будут считаться как 10+1... Блин, всеравно с буквой n одинаково выходит... =) Ну тогда по три бита. Соответственно будет сто десять для n и сто один для e.
|
![]() |
![]() |
![]() |
#7 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]()
а чем crc32 не нравится? Быстрый алгоритм, полностью готов, даже думать не надо. Копируй, прогоняй, записывай эталон. Ломануть без разбора и изменения exe - практически невозможно. Подобрать файлы с такой же контрольной суммой почти невозможно. А если разбирать exe - то тебе ни один алгоритм не поможет. Это делается в два счета. Дергаем алгоритм хеширования, считаем хеши для новых файлов, правим в exe эталонные хеши и все. Есть способы еще проще. Ставим перед процедурой проверки jmp и все.
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Прибавить отрицательный процент к сумме. | ms.green | Microsoft Office Excel | 5 | 11.06.2010 00:07 |
Сортировка по максимальной сумме полей | KIrich iz Che | Общие вопросы C/C++ | 2 | 24.05.2010 16:06 |
Вопрос в решении контрольной | XAOC-forever | Помощь студентам | 2 | 29.04.2010 22:54 |
Запрос по общей сумме зарплат. | Tanusha | SQL, базы данных | 2 | 01.09.2008 11:39 |