Главная страница
    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.035 c
3-1094803115
/glokk
2004-09-10 11:58
2004.10.10
найти повторяющиеся номера


3-1094733630
Алексей
2004-09-09 16:40
2004.10.10
ADO,FOX: файл уже используется???


1-1096278662
Ann_k
2004-09-27 13:51
2004.10.10
Как раскрасить строку в dbgrid?


1-1095828547
_sulent
2004-09-22 08:49
2004.10.10
Шрифт


3-1095312215
Бар
2004-09-16 09:23
2004.10.10
по DBGrig





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский