Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

Контрольная сумма файла.   Найти похожие ветки 

 
Leaner ©   (2004-09-25 10:45) [0]

Здравствуйте ! Помогите, пожалуйста !
Мне необходимо иметь возможность узнать, изменялся ли
Dll или exe файл, после моей последней проверки.
( DataCreate не подходит ). Хочется запоминать что-то типа
его контрольной суммы, и потом сравнивать. Но я совершенно не знаю
структуры exe-шников. Как из любого dll или exe вытащить контрольную сумму
или что-нибудь подобное ?


 
Defunct ©   (2004-09-25 10:54) [1]

открыть итересующий файл для exe или dll чтения, прочитать его в буфер, закрыть файл, просуммировать все байты, а лучше dword"ы - вот вам и контрольная сумма. Для этого не надо знать структуры файла.


 
GuAV ©   (2004-09-25 10:56) [2]


> просуммировать все байты, а лучше dword"ы - вот вам и контрольная
> сумма

Но лучше использовать не такую сумму, а CRC.


 
Defunct ©   (2004-09-25 11:04) [3]

имелось ввиду просуммировать по модулю (всмысле XOR).


 
GuAV ©   (2004-09-25 11:15) [4]


> имелось ввиду просуммировать по модулю (всмысле XOR).

Имхо практически то же самое, а CRC лучше.


 
Leaner ©   (2004-09-25 11:32) [5]

>просуммировать все байты
А это не слишком долго ? Если надо проверять очень много файлов.
Может легче получить уже готовые данные из exe ?


 
Defunct ©   (2004-09-25 12:09) [6]

> А это не слишком долго ?

примерно 0.05 сек на файл объемом 1Mb
может быть быстрее, может медленнее.
Во всяком случае гораздо быстрее чем Rar извлекает файлы из архива.

> Может легче получить уже готовые данные из exe ?
А с чего вы взяли, что там есть контрольная сумма? Нет ее там.


 
Leaner ©   (2004-09-25 12:20) [7]

Спасибо.
P.S. А жаль, что нет.


 
Defunct ©   (2004-09-25 12:37) [8]

Хотя вру.. в заголовке PE файла есть CheckSum:Word смещение 0018 от начала файла, но это немного не та CheckSum, которая вам нужна.


 
DVM ©   (2004-09-25 12:58) [9]

В связи с контрольными суммами у меня возник тоже вот какой вопрос.
Допустим надо проверять не хакнута ли программа (не меняли ли ее код) из нее самой. Т.е. контрольную сумму ее исполняемого файла надо поместить в код программы. Но возможно ли это вообще? Ведь после перекомпиляции получим уже другой файл с другой контрольной суммой. Даже если ничего не менять в файле они после каждой сборки различаются. Можно такое осуществить?


 
Defunct ©   (2004-09-25 13:06) [10]

> Т.е. контрольную сумму ее исполняемого файла надо поместить в код программы.

Да, конечно можно.

Делаете модуль в котором будут сл. функции:
1. посчитать контрольную сумму (КС) Dword"ов EXE файла, при этом последние 20 байт файла не учитывать.
2. заменить последние 4 байта EXE-файла на КС
3. считать последние 4 байта.

вот потом пишете прединсталлятор, который будет добавлять в вашу программу КС, пользуясь функциями [1,2] модуля.

В самой "защищяемой" программе используете функции [3, 1] того же модуля при старте программы.


 
Defunct ©   (2004-09-25 13:09) [11]

IMHO хакеры снесут эти функции, поэтому их надо как-то "присыпать" левым ассемблерным кодом, чтобы трудно было понять их назначение.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
8-1090038764
ИМХО
2004-07-17 08:32
2004.10.10
tWAVEFORMATEX (MMSystem)


3-1093228943
buka
2004-08-23 06:42
2004.10.10
Роковое число 255!


8-1090282405
Sky Knight
2004-07-20 04:13
2004.10.10
Микрофон вкл/выкл


14-1095631738
jack128
2004-09-20 02:08
2004.10.10
Народ, а как в старших версиях Дельфей (6 и выше) с CodeExplorer?


1-1096090966
md5 hash
2004-09-25 09:42
2004.10.10
MDI приложение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский