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

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

Приведу пример, чтобы стало яснее. Например, создать в области констант строку типа "Эталон_контрольной суммы = 0x123456789", вколотив в него сначала произвольные цифры. Затем открываете файл и ищете начало надписи "Эталон_контрольной суммы = " и вычисляете знакоместо после конца этой записи (там, где цифра должна начаться). Пусть это значение будет P1-й байт от начала файла. А после этого вычисляем знакоместо после цифры 0x123456789. Пусть это будет P2=P1+11. А дальше просто - вычисляете констрольные суммы файла от 0 до P1, и от P2 до конца файла, а потом их складываете. Это число и надо будет запихнуть в программу при следующей компиляции, заменив им число 0x123456789. Понятно, что на это место можно запихать любое число, не рискуя тем, что ваша контрольная сумма от этого изменится.
Если требуется обеспечить секретность, то число можно положить в бинарном виде, а ярлычок к ней "Эталон_контрольной суммы =" тоже заменить как какую-нибудь уникальную бинарную цифирь.
toweroff
Цитата(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 трояна и швыряет файл в карантин
sigmaN
Юзал Armadillo. В Delphi и в Builder'e. Отличная штука. С антивирусами проблем не было... уж с NOD точно.
toweroff
Цитата(sigmaN @ Feb 12 2011, 00:47) *
Юзал Armadillo. В Delphi и в Builder'e. Отличная штука. С антивирусами проблем не было... уж с NOD точно.

спасибо
ссылочку дадите? гугл находит какие-то мумии, животных экзотических, грузоперевозки и еще кучу ереси sm.gif
отбой, нашел

sigmaN
посвежее ищите....
рабочий крякнутый вариант гуглится туго, но всё-же находится.....
toweroff
Цитата(sigmaN @ Feb 12 2011, 04:28) *
посвежее ищите....
рабочий крякнутый вариант гуглится туго, но всё-же находится.....

какую версию лучше искать? 6.6 можно найти, 7 - где-то видел сообщения о ее глючности/сырости
sigmaN
Честно говоря, сказал про свежесть из соображений поддержки новых осей и примочек... так то дело имел с этой заразой уже года полтора-два назад и помню, что качнул старую и она у меня глюкала..потом на форуме отправили за новой версией...сейчас даже не вспомню что за версия была... файлик сейчас попробовал отыскать, но безуспешно sad.gif
ну раз говорят, что глючная/сырая - значит 6.6 тогда, а что делать )
toweroff
sigmaN, нашел 7.2, 8 версии не обнаружил пока
не суть
программа шифруется, добавляется к exe еще порядка 1.5Мб
прога работает-работает... и тихо закрывается без объяснения причин sad.gif
с чем может быть связано?
sigmaN
Ну то, что это не просто защищалка файлов, а полноценный и мощный протектор, имеющий не мало опций и режимов защиты, надеюсь, объяснять не нужно )
Поэтому надо и начинать с изучения доков и выбора режимов защиты.... dllки там ещё как-то линкуются... в общем много чего подкрутить там можно, чтобы разглючить.

плюс ещё может кряка неудачная... Я, помнится, настройки крутил-вертел, да...так что, наверное, это нормально для армадиллы.
toweroff
Цитата(sigmaN @ Feb 12 2011, 20:38) *
Ну то, что это не просто защищалка файлов, а полноценный и мощный протектор, имеющий не мало опций и режимов защиты, надеюсь, объяснять не нужно )
Поэтому надо и начинать с изучения доков и выбора режимов защиты.... dllки там ещё как-то линкуются... в общем много чего подкрутить там можно, чтобы разглючить.

ну это понятно... винлицензе особо не требовала, только ключи сгенерировать, все остальное -- опционально (хотя система защиты, насколько я покопался, более интересная -- на базе своей виртуальной машины)
тут, по ходу, она еще и сертификаты встраивает... но почему ни слова не говорит? закрывается и все sad.gif

Цитата(sigmaN @ Feb 12 2011, 20:38) *
плюс ещё может кряка неудачная... Я, помнится, настройки крутил-вертел, да...так что, наверное, это нормально для армадиллы.

похоже, копаться придется
насчет кряка -- если она его "съела", -- значит хорошо?
sigmaN
Уж не знаю... может быть если дело просто в защите екзешника от модификации, то нужно выбрать другую программу...
toweroff
Цитата(sigmaN @ Feb 12 2011, 21:18) *
Уж не знаю... может быть если дело просто в защите екзешника от модификации, то нужно выбрать другую программу...

возможно и так, но коли уж сторонняя софтина предоставляет сервис... сертификации не нужны, также не нужны все лицензии включая тайм... нихт
не о том ли народ говорил?
Но вроде как 7.2, а не просто 7 05.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.