Страница 1 из 3

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

Добавлено: 01 Апрель 2015, 15:40
Stalker
Привет всем!
С6, win7
Возникла необходимость после запуска проги, к примеру файла proga.exe, рассчитать его контрольную сумму и сверить с контрольным значением находящимся в одном из tps файлов (либо значением в глобальной переменной), после чего определить реакцию на сравнение, закрыть прогу или продолжить работу.Просмотрел форум что- похожее есть но не совсем по сути.
Это необходимо для отслеживания несанкционированных изменений и дополнений в .exe файл проги.
Подскажите куда рулить.
С уважением Stalker

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

Добавлено: 01 Апрель 2015, 20:46
Алексей- Софт-Центр
Добрый день!
все просто:
в словаре объявляешь бин файл с одним полем string(1)

соответственно имя физического файла устонавливаем как имя программы
типа:
filename='proga.exe'
в программе открываете его только на чтение
open(file,40h) !
ну и в переменную пишем количество записей в нем, типа:
kol=records(file)
В kol и будет длина(размер/контрольная сумма) файла
Алексей

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

Добавлено: 01 Апрель 2015, 22:39
Yufil
Привет!

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

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 уважением,
Юрий Философов

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

Добавлено: 02 Апрель 2015, 8:34
Stalker
Спасибо, коллеги за помощь.
Буду пробовать. Как получится отпишусь.
С уважением Stalker

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

Добавлено: 02 Апрель 2015, 10:26
Admin
Алексей- Софт-Центр писал(а): размер/контрольная сумма
Размер - да. Контрольная сумма - нет.

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

Добавлено: 02 Апрель 2015, 10:34
Admin
Stalker писал(а): отслеживания несанкционированных изменений и дополнений в .exe файл проги
От непреднамеренной порчи EXE, спасет. А от хакера нет, т.к. он в дебагере твою проверку найдет за пару минут.
Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.

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

Добавлено: 02 Апрель 2015, 10:51
kreator
Admin писал(а):Зовем в тред AlesDales, что бы рассказал чем прогу проще защитить.
Если посмотреть на MS Windows, то ничем :mrgreen: .
А так варианты есть. Например, регистрация через Инет и регулярная проверка через Инет кода регистрации (а-ля Касперский). Я защитился в своё время а-ля Консультант Плюс. Прога привязывается к разделу жёсткого диска, а ключ даётся, скажем так, лично мной. Перенос на другое устройство невозможен. Понятно, что спецы-хакеры всё могут, вопрос только в цене вопроса.

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

Добавлено: 02 Апрель 2015, 12:49
Yufil
Ну, сверни программу проверки упаковщиком типа aspack или виртуализуй в архив. Насколько я понял, вопрос не о взломе, а о нарушении комплектности или целостности системы.

Кстати, не положить ли сами программы в блобы криптованного TPS-файла и распаковывать в начале работы для каждого пользователя в его личный каталог ?

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

Добавлено: 02 Апрель 2015, 15:00
Алексей- Софт-Центр
Добрый день!
Размер - да. Контрольная сумма - нет.
Ну, да.

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

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


Алексей

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

Добавлено: 02 Апрель 2015, 15:57
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 и иже с ними устанавливайте минимальный уровень криптозащиты (никакой виртуализации) иначе все антивирусы ваших заказчиков будут орать, что программа инфицирована.

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

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

Спосибо, всем.

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

Добавлено: 03 Апрель 2015, 12:18
Yufil
Последний раз для близких целей юзал enigma virtual box

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

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

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

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

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

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

Добавлено: 04 Апрель 2015, 11:39
AlesDales
Игорь Столяров писал(а): С удовольствием почитал дебаты. :)
Но остался осадок, т.к. не понял главного: а чем не подходит стандартный механизм Windows с подпись EXE файла сертификатом ?
Тем, что он никак не помогает :) Или есть возможность предоставить exe файл, скомпилированный Кларионом, подписанный сертификатом, который нельзя скопировать на другой компьютер и модифицировать любым образом, а затем запускать сколько угодно раз ?

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

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

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