Как рассчитать контрольную сумму .exe файла программы
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Привет всем!
С6, win7
Возникла необходимость после запуска проги, к примеру файла proga.exe, рассчитать его контрольную сумму и сверить с контрольным значением находящимся в одном из tps файлов (либо значением в глобальной переменной), после чего определить реакцию на сравнение, закрыть прогу или продолжить работу.Просмотрел форум что- похожее есть но не совсем по сути.
Это необходимо для отслеживания несанкционированных изменений и дополнений в .exe файл проги.
Подскажите куда рулить.
С уважением Stalker
С6, win7
Возникла необходимость после запуска проги, к примеру файла proga.exe, рассчитать его контрольную сумму и сверить с контрольным значением находящимся в одном из tps файлов (либо значением в глобальной переменной), после чего определить реакцию на сравнение, закрыть прогу или продолжить работу.Просмотрел форум что- похожее есть но не совсем по сути.
Это необходимо для отслеживания несанкционированных изменений и дополнений в .exe файл проги.
Подскажите куда рулить.
С уважением Stalker
Специализация - программы для образования, делопроизводство, складской учет
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Добрый день!
все просто:
в словаре объявляешь бин файл с одним полем string(1)
соответственно имя физического файла устонавливаем как имя программы
типа:
filename='proga.exe'
в программе открываете его только на чтение
open(file,40h) !
ну и в переменную пишем количество записей в нем, типа:
kol=records(file)
В kol и будет длина(размер/контрольная сумма) файла
Алексей
все просто:
в словаре объявляешь бин файл с одним полем string(1)
соответственно имя физического файла устонавливаем как имя программы
типа:
filename='proga.exe'
в программе открываете его только на чтение
open(file,40h) !
ну и в переменную пишем количество записей в нем, типа:
kol=records(file)
В kol и будет длина(размер/контрольная сумма) файла
Алексей
Как рассчитать контрольную сумму .exe файла программы
Привет!
Надо просто считать программу в текстовую строку, а потом вычислить CRC32 для этой строки
Первое достаточно тривиально. Я бы использовал собственный класс CSTR
MODULE('Clarion API')
CRC32(ULong,Ulong,Ulong),ULong,Name('Cla$Crc32')
END
Include('cstr.inc')
S Cstr
ProgramCRC ULONG
...
S.LoadFromFile('program.exe')
ProgramCRC = CRC32(Address(S.S), S.Len, 0)
Последнее поле - произвольное фиксированное значение. Для проверки надо задать такое же
C уважением,
Юрий Философов
Надо просто считать программу в текстовую строку, а потом вычислить CRC32 для этой строки
Первое достаточно тривиально. Я бы использовал собственный класс CSTR
MODULE('Clarion API')
CRC32(ULong,Ulong,Ulong),ULong,Name('Cla$Crc32')
END
Include('cstr.inc')
S Cstr
ProgramCRC ULONG
...
S.LoadFromFile('program.exe')
ProgramCRC = CRC32(Address(S.S), S.Len, 0)
Последнее поле - произвольное фиксированное значение. Для проверки надо задать такое же
C уважением,
Юрий Философов
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Спасибо, коллеги за помощь.
Буду пробовать. Как получится отпишусь.
С уважением Stalker
Буду пробовать. Как получится отпишусь.
С уважением Stalker
Специализация - программы для образования, делопроизводство, складской учет
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3924
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 14 раз
- Поблагодарили: 14 раз
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
От непреднамеренной порчи EXE, спасет. А от хакера нет, т.к. он в дебагере твою проверку найдет за пару минут.
Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 4676
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 5 раз
- Поблагодарили: 3 раза
Как рассчитать контрольную сумму .exe файла программы
Если посмотреть на MS Windows, то ничемAdmin писал(а):Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.

А так варианты есть. Например, регистрация через Инет и регулярная проверка через Инет кода регистрации (а-ля Касперский). Я защитился в своё время а-ля Консультант Плюс. Прога привязывается к разделу жёсткого диска, а ключ даётся, скажем так, лично мной. Перенос на другое устройство невозможен. Понятно, что спецы-хакеры всё могут, вопрос только в цене вопроса.
We are hard at work… for you. 

Как рассчитать контрольную сумму .exe файла программы
Ну, сверни программу проверки упаковщиком типа aspack или виртуализуй в архив. Насколько я понял, вопрос не о взломе, а о нарушении комплектности или целостности системы.
Кстати, не положить ли сами программы в блобы криптованного TPS-файла и распаковывать в начале работы для каждого пользователя в его личный каталог ?
Кстати, не положить ли сами программы в блобы криптованного TPS-файла и распаковывать в начале работы для каждого пользователя в его личный каталог ?
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Добрый день!
Вероятнее всего - задача состоит в выполнении некоторых требований Заказчика к ПО.
Мы это уже проходили, подгоняя свой софт. Тогда нам достаточно было посчитать размер файла.
(Но так это или нет - это знает только автор поста)
Алексей
Ну, да.Размер - да. Контрольная сумма - нет.
Вероятнее всего - задача состоит в выполнении некоторых требований Заказчика к ПО.
Мы это уже проходили, подгоняя свой софт. Тогда нам достаточно было посчитать размер файла.
(Но так это или нет - это знает только автор поста)
Алексей
Как рассчитать контрольную сумму .exe файла программы
Это в конце 90x так программы защищали

Для aspack давно уже есть универсальные распаковщики, лучше взять asprotect. Для asprotect правда тоже есть скрипты для ollydbg, например "ASProtect 2.xx Virtual Machine Rebuilder.txt" или "ASProtect 2.xx IAT Recovery.txt", но после распаковки EXE файла надо потратить какое-то время для восстановления таблицы импорта. Import REConstructor делает это автоматически, но не в этом случае.
Кстати я Игорю Губину распаковал его программу, завернутую в asprotect, остановился только на этапе восстановления таблицы импорта, потому что там уже работать надо

Так что я рекомендовал бы делать какие угодно проверки, но от модификации кода защититься оберткой типа asprotect или themida, 90% кулхацкеров это остановит, а тех, кто живет с этого разве что рассмешит (последние вряд ли будут тратить время на вашу программу, разве что она стоит >$2000 или распространена по всему инету). Все остальные заумные потуги (а вот тут я проверю, а здесь в интернет программа сползает) отламывается изменением даже не байта, а одного бита - просто JE меняется на JNE.
Да и кстати при использовании aspack, asprotect, themida и иже с ними устанавливайте минимальный уровень криптозащиты (никакой виртуализации) иначе все антивирусы ваших заказчиков будут орать, что программа инфицирована.
в стране слепых правит одноглазый король (c) ...
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Первоначально ставилась простая задача, отследить возможные измения или дополнения в .exe проги.Про хакеров вопрос не стоит, так как это не их уровень. Просто есть категория любителей покопаться в коде программы, возможно считающих себя начинающими хакерами, которые считают что изменив в проге строку с реквизитами автора или символы авторства, тем самым присваивают проге статус ничейной (безавторской) и банально используют или распостраняют уже под другим именем даже без комерческой выгоды.Просто ради своего утверждения. Работаю с программами для образования, так вот студенты этим немного грешат.Хакерам это не нужно и это не их статус.
Первоначально думал, что определив контрольную сумму проги , и сделав 5-10 проверок ее в ходе загрузки различных процедур, можно решить проблемму, но почитав сообщения опытных в этой области коллег, понял что не все так просто.
Это в корень.Попробую глубже разобраться по рекомендациям AlesDales.AlesDales писал(а): Так что я рекомендовал бы делать какие угодно проверки, но от модификации кода защититься оберткой типа asprotect или themida, 90% кулхацкеров это остановит, а тех, кто живет с этого разве что рассмешит (последние вряд ли будут тратить время на вашу программу, разве что она стоит >$2000 или распространена по всему инету)
Спосибо, всем.
Специализация - программы для образования, делопроизводство, складской учет
Как рассчитать контрольную сумму .exe файла программы
Последний раз для близких целей юзал enigma virtual box
http://rsload.net/soft/editor/10862-eni ... l-box.html
Получил один-единственный exe - файл вместо exe + dll + ocx.
Конечно, для кулхацкеров не прокатит, но начинающего остановит. Или не...
http://rsload.net/soft/editor/10862-eni ... l-box.html
Получил один-единственный exe - файл вместо exe + dll + ocx.
Конечно, для кулхацкеров не прокатит, но начинающего остановит. Или не...

- Игорь Столяров
- Ветеран движения
- Сообщения: 6753
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Как рассчитать контрольную сумму .exe файла программы
С удовольствием почитал дебаты. 
Но остался осадок, т.к. не понял главного: а чем не подходит стандартный механизм Windows с подпись EXE файла сертификатом ?
Как раз эта задача и решается: проверка целостности EXE файла, удостоверение автора и времени сборки ...
Или Вы хотите изобрести велосипед именно с квадратными колесами ?
P/S: Алгоритм расчета хеша SHA1 по строке известен, одну из реализаций я выкладывал в форуме.

Но остался осадок, т.к. не понял главного: а чем не подходит стандартный механизм Windows с подпись EXE файла сертификатом ?
Как раз эта задача и решается: проверка целостности EXE файла, удостоверение автора и времени сборки ...
Или Вы хотите изобрести велосипед именно с квадратными колесами ?

P/S: Алгоритм расчета хеша SHA1 по строке известен, одну из реализаций я выкладывал в форуме.
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
Как рассчитать контрольную сумму .exe файла программы
Тем, что он никак не помогает

в стране слепых правит одноглазый король (c) ...
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Как рассчитать контрольную сумму .exe файла программы
Очень интересная мысль. Залить прогу в блоб (7 мегобайт), затем сделать небольшую програмулю для ее извлечения.Но как запустить такую программу из блоба, чтобы она не копировалась на жесткий диск и запускалась стандартными средствами, а сразу же загружалась в оперативную память из блоба и начинала работать. Наверное такое только средствами клары не осилить......
Просто не пользовался никогда этим методом, но интуитивно чувствую что это не совсем подойдет....
Скачал, буду осваивать, если не будет сильно увеличивать размер выходного файла и тормозить прогу то решение на мой взгляд дельное.
Специализация - программы для образования, делопроизводство, складской учет