реклама на сайте
подробности

 
 
> Проверка целостности exe-файла, C Builder 6
toweroff
сообщение Feb 11 2011, 16:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Здравствуйте!
Есть задача self-test исполняемого exe-файла
Как это лучше сделать? Выщемить имя, под которым его запустили, открыть, считать и рассчитать всякие MD5 & SHA1, сравнить с константами?
Но при модификации констант изменятся и хэши... что-то я совсем запутался sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Feb 11 2011, 16:59
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(toweroff @ Feb 11 2011, 19:12) *
Здравствуйте!
Есть задача self-test исполняемого exe-файла
Как это лучше сделать? Выщемить имя, под которым его запустили, открыть, считать и рассчитать всякие MD5 & SHA1, сравнить с константами?
Но при модификации констант изменятся и хэши... что-то я совсем запутался sad.gif

Если известно место, где находится образец контрольной суммы, то можно находить частные контрольные суммы ДО и ПОСЛЕ этого образца, т.е. за исключением самого эталона КС, хранящегося в файле.

Приведу пример, чтобы стало яснее. Например, создать в области констант строку типа "Эталон_контрольной суммы = 0x123456789", вколотив в него сначала произвольные цифры. Затем открываете файл и ищете начало надписи "Эталон_контрольной суммы = " и вычисляете знакоместо после конца этой записи (там, где цифра должна начаться). Пусть это значение будет P1-й байт от начала файла. А после этого вычисляем знакоместо после цифры 0x123456789. Пусть это будет P2=P1+11. А дальше просто - вычисляете констрольные суммы файла от 0 до P1, и от P2 до конца файла, а потом их складываете. Это число и надо будет запихнуть в программу при следующей компиляции, заменив им число 0x123456789. Понятно, что на это место можно запихать любое число, не рискуя тем, что ваша контрольная сумма от этого изменится.
Если требуется обеспечить секретность, то число можно положить в бинарном виде, а ярлычок к ней "Эталон_контрольной суммы =" тоже заменить как какую-нибудь уникальную бинарную цифирь.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 11 2011, 17:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Xenia @ Feb 11 2011, 19:59) *
Если известно место, где находится образец контрольной суммы, то можно находить частные контрольные суммы ДО и ПОСЛЕ этого образца, т.е. за исключением самого эталона КС, хранящегося в файле.

Приведу пример, чтобы стало яснее. Например, создать в области констант строку типа "Эталон_контрольной суммы = 0x123456789", вколотив в него сначала произвольные цифры. Затем открываете файл и ищете начало надписи "Эталон_контрольной суммы = " и вычисляете знакоместо после конца этой записи (там, где цифра должна начаться). Пусть это значение будет P1-й байт от начала файла. А после этого вычисляем знакоместо после цифры 0x123456789. Пусть это будет P2=P1+11. А дальше просто - вычисляете констрольные суммы файла от 0 до P1, и от P2 до конца файла, а потом их складываете. Это число и надо будет запихнуть в программу при следующей компиляции, заменив им число 0x123456789. Понятно, что на это место можно запихать любое число, не рискуя тем, что ваша контрольная сумма от этого изменится.
Если требуется обеспечить секретность, то число можно положить в бинарном виде, а ярлычок к ней "Эталон_контрольной суммы =" тоже заменить как какую-нибудь уникальную бинарную цифирь.

спасибо, я тоже в таком направлении начал думать, немного смущали два хеша

посмотрел еще в сторону сторонних скрывателей кода, типа Themida, WinLicense и иже с ними
тут можно проверкой не заморачиваться -- они сами это все встроят и, мало того, зашифруют код и запустят под своей виртуалкой. Какое мнение по поводу такого софта вообще?
Смущает такая вещь, не хочется, чтобы клиенты потом в саппорт оборвали телефон и завалили почтовый ящик кучей гневных писем sm.gif
У меня стоит Nod32, так он, по ходу, не может добраться до развернутого в памяти процесса и особо не заморачивается -- тупо говорит, что файл содержит win32/packed.themida.AAG трояна и швыряет файл в карантин
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01795 секунд с 7
ELECTRONIX ©2004-2016