Как рассчитать контрольную сумму .exe файла программы

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Stalker
Активист
Сообщения: 127
Зарегистрирован: 01 Декабрь 2005, 20:47
Откуда: Минск
Контактная информация:

Как рассчитать контрольную сумму .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 и будет длина(размер/контрольная сумма) файла
Алексей
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Yufil »

Привет!

Надо просто считать программу в текстовую строку, а потом вычислить CRC32 для этой строки
Первое достаточно тривиально. Я бы использовал собственный класс CSTR
Cstr.zip
(2.23 КБ) 246 скачиваний

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 уважением,
Юрий Философов
Stalker
Активист
Сообщения: 127
Зарегистрирован: 01 Декабрь 2005, 20:47
Откуда: Минск
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Stalker »

Спасибо, коллеги за помощь.
Буду пробовать. Как получится отпишусь.
С уважением Stalker
Специализация - программы для образования, делопроизводство, складской учет
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Admin »

Алексей- Софт-Центр писал(а): размер/контрольная сумма
Размер - да. Контрольная сумма - нет.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Admin »

Stalker писал(а): отслеживания несанкционированных изменений и дополнений в .exe файл проги
От непреднамеренной порчи EXE, спасет. А от хакера нет, т.к. он в дебагере твою проверку найдет за пару минут.
Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как рассчитать контрольную сумму .exe файла программы

Сообщение kreator »

Admin писал(а):Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.
Если посмотреть на MS Windows, то ничем :mrgreen: .
А так варианты есть. Например, регистрация через Инет и регулярная проверка через Инет кода регистрации (а-ля Касперский). Я защитился в своё время а-ля Консультант Плюс. Прога привязывается к разделу жёсткого диска, а ключ даётся, скажем так, лично мной. Перенос на другое устройство невозможен. Понятно, что спецы-хакеры всё могут, вопрос только в цене вопроса.
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Yufil »

Ну, сверни программу проверки упаковщиком типа aspack или виртуализуй в архив. Насколько я понял, вопрос не о взломе, а о нарушении комплектности или целостности системы.

Кстати, не положить ли сами программы в блобы криптованного TPS-файла и распаковывать в начале работы для каждого пользователя в его личный каталог ?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Алексей- Софт-Центр »

Добрый день!
Размер - да. Контрольная сумма - нет.
Ну, да.

Вероятнее всего - задача состоит в выполнении некоторых требований Заказчика к ПО.
Мы это уже проходили, подгоняя свой софт. Тогда нам достаточно было посчитать размер файла.

(Но так это или нет - это знает только автор поста)


Алексей
AlesDales
Активист
Сообщения: 198
Зарегистрирован: 14 Июль 2005, 15:42

Как рассчитать контрольную сумму .exe файла программы

Сообщение AlesDales »

kreator писал(а): ... Прога привязывается к разделу жёсткого диска, а ключ даётся, скажем так, лично мной. Перенос на другое устройство невозможен. Понятно, что спецы-хакеры всё могут, вопрос только в цене вопроса.
Это в конце 90x так программы защищали :)
Yufil писал(а): Ну, сверни программу проверки упаковщиком типа aspack или виртуализуй в архив. Насколько я понял, вопрос не о взломе, а о нарушении комплектности или целостности системы.
Для 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) ...
Stalker
Активист
Сообщения: 127
Зарегистрирован: 01 Декабрь 2005, 20:47
Откуда: Минск
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Stalker »

Admin писал(а): От непреднамеренной порчи EXE, спасет. А от хакера нет, т.к. он в дебагере твою проверку найдет за пару минут.
Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.
Stalker писал(а): Это необходимо для отслеживания несанкционированных изменений и дополнений в .exe файл проги.
Подскажите куда рулить.
Первоначально ставилась простая задача, отследить возможные измения или дополнения в .exe проги.Про хакеров вопрос не стоит, так как это не их уровень. Просто есть категория любителей покопаться в коде программы, возможно считающих себя начинающими хакерами, которые считают что изменив в проге строку с реквизитами автора или символы авторства, тем самым присваивают проге статус ничейной (безавторской) и банально используют или распостраняют уже под другим именем даже без комерческой выгоды.Просто ради своего утверждения. Работаю с программами для образования, так вот студенты этим немного грешат.Хакерам это не нужно и это не их статус.
Первоначально думал, что определив контрольную сумму проги , и сделав 5-10 проверок ее в ходе загрузки различных процедур, можно решить проблемму, но почитав сообщения опытных в этой области коллег, понял что не все так просто.
AlesDales писал(а): Так что я рекомендовал бы делать какие угодно проверки, но от модификации кода защититься оберткой типа asprotect или themida, 90% кулхацкеров это остановит, а тех, кто живет с этого разве что рассмешит (последние вряд ли будут тратить время на вашу программу, разве что она стоит >$2000 или распространена по всему инету)
Это в корень.Попробую глубже разобраться по рекомендациям AlesDales.

Спосибо, всем.
Специализация - программы для образования, делопроизводство, складской учет
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как рассчитать контрольную сумму .exe файла программы

Сообщение Yufil »

Последний раз для близких целей юзал enigma virtual box

http://rsload.net/soft/editor/10862-eni ... l-box.html

Получил один-единственный exe - файл вместо exe + dll + ocx.
Конечно, для кулхацкеров не прокатит, но начинающего остановит. Или не... :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7328
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Как рассчитать контрольную сумму .exe файла программы

Сообщение Игорь Столяров »

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

P/S: Алгоритм расчета хеша SHA1 по строке известен, одну из реализаций я выкладывал в форуме.
За теми кто отстал - не возвращаться. (С) Кодекс
AlesDales
Активист
Сообщения: 198
Зарегистрирован: 14 Июль 2005, 15:42

Как рассчитать контрольную сумму .exe файла программы

Сообщение AlesDales »

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

Как рассчитать контрольную сумму .exe файла программы

Сообщение Stalker »

Yufil писал(а): Кстати, не положить ли сами программы в блобы криптованного TPS-файла и распаковывать в начале работы для каждого пользователя в его личный каталог ?
Очень интересная мысль. Залить прогу в блоб (7 мегобайт), затем сделать небольшую програмулю для ее извлечения.Но как запустить такую программу из блоба, чтобы она не копировалась на жесткий диск и запускалась стандартными средствами, а сразу же загружалась в оперативную память из блоба и начинала работать. Наверное такое только средствами клары не осилить......
Игорь Столяров писал(а): Но остался осадок, т.к. не понял главного: а чем не подходит стандартный механизм Windows с подпись EXE файла сертификатом ?
Просто не пользовался никогда этим методом, но интуитивно чувствую что это не совсем подойдет....

Yufil писал(а): Получил один-единственный exe - файл вместо exe + dll + ocx.
Конечно, для кулхацкеров не прокатит, но начинающего остановит.
Скачал, буду осваивать, если не будет сильно увеличивать размер выходного файла и тормозить прогу то решение на мой взгляд дельное.
Специализация - программы для образования, делопроизводство, складской учет
Ответить