![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Контрольная сумма файла. [D7, Win95/98, WinXP]
Leaner © (2004-09-25 10:45:00)Здравствуйте ! Помогите, пожалуйста !
Мне необходимо иметь возможность узнать, изменялся ли
Dll или exe файл, после моей последней проверки.
( DataCreate не подходит ). Хочется запоминать что-то типа
его контрольной суммы, и потом сравнивать. Но я совершенно не знаю
структуры exe-шников. Как из любого dll или exe вытащить контрольную сумму
или что-нибудь подобное ?
Defunct (2004-09-25 13:09:00) [1]IMHO хакеры снесут эти функции, поэтому их надо как-то "присыпать" левым ассемблерным кодом, чтобы трудно было понять их назначение.
Defunct (2004-09-25 13:06:00) [2]> Т.е. контрольную сумму ее исполняемого файла надо поместить в код программы.
Да, конечно можно.
Делаете модуль в котором будут сл. функции:
1. посчитать контрольную сумму (КС) Dword'ов EXE файла, при этом последние 20 байт файла не учитывать.
2. заменить последние 4 байта EXE-файла на КС
3. считать последние 4 байта.
вот потом пишете прединсталлятор, который будет добавлять в вашу программу КС, пользуясь функциями [1,2] модуля.
В самой "защищяемой" программе используете функции [3, 1] того же модуля при старте программы.
DVM (2004-09-25 12:58:00) [3]В связи с контрольными суммами у меня возник тоже вот какой вопрос.
Допустим надо проверять не хакнута ли программа (не меняли ли ее код) из нее самой. Т.е. контрольную сумму ее исполняемого файла надо поместить в код программы. Но возможно ли это вообще? Ведь после перекомпиляции получим уже другой файл с другой контрольной суммой. Даже если ничего не менять в файле они после каждой сборки различаются. Можно такое осуществить?
Defunct (2004-09-25 12:37:00) [4]Хотя вру.. в заголовке PE файла есть CheckSum:Word смещение 0018 от начала файла, но это немного не та CheckSum, которая вам нужна.
Leaner (2004-09-25 12:20:00) [5]Спасибо.
P.S. А жаль, что нет.
Defunct (2004-09-25 12:09:00) [6]> А это не слишком долго ?
примерно 0.05 сек на файл объемом 1Mb
может быть быстрее, может медленнее.
Во всяком случае гораздо быстрее чем Rar извлекает файлы из архива.
> Может легче получить уже готовые данные из exe ?
А с чего вы взяли, что там есть контрольная сумма? Нет ее там.
Leaner (2004-09-25 11:32:00) [7]>просуммировать все байты
А это не слишком долго ? Если надо проверять очень много файлов.
Может легче получить уже готовые данные из exe ?
GuAV (2004-09-25 11:15:00) [8]
> имелось ввиду просуммировать по модулю (всмысле XOR).
Имхо практически то же самое, а CRC лучше.
Defunct (2004-09-25 11:04:00) [9]имелось ввиду просуммировать по модулю (всмысле XOR).
GuAV (2004-09-25 10:56:00) [10]
> просуммировать все байты, а лучше dword'ы - вот вам и контрольная
> сумма
Но лучше использовать не такую сумму, а CRC.
Defunct (2004-09-25 10:54:00) [11]открыть итересующий файл для exe или dll чтения, прочитать его в буфер, закрыть файл, просуммировать все байты, а лучше dword'ы - вот вам и контрольная сумма. Для этого не надо знать структуры файла.