Форум — Ответы     (  К темам )
 ?  Игорь: Прога для сжатия ехе-шников (01-04-2003 18:09:13)
Хотелось бы сжимать ехе-шники с использованием пароля(или чего-то подобного).
UPX и AsPack ведь не только пакуют, но и распаковывают(есно то что им запаковано). А не хотелось бы, чтобы кто-то посторонний мог распаковать ехе-шник.
Может кто-то чем-то подобным пользуется.
 Георгий (01-04-2003 18:37:55)
"А не хотелось бы, чтобы кто-то посторонний мог распаковать ехе-шник"
есть проги для взлома (распаковки) ЛЮБЫХ упакованных исполняемых файлов, причём это они делают в автоматическом режиме т.е. запускаешь её, указываешь файл и тебя спрашивают, куда записать распакованный...
А если в автоматическом режиме не удаётся распаковать, то грузим отладчик защищённого режима и вот оно — спустя 1,2,3,...,много часов(дней) найдено "лечение" этой защиты от распаковки в виде распакующей программы...
в принципе защититься можно не показывая исходники — т.к. копаться в машинных кодах мало кто будет.
 Игорь (01-04-2003 20:03:21)
Ясно, что защититься от преднамеренного и целенаправленного "взлома" сложно.
Да так задача и не стоит.
Случай следующий(реально столкнулся):
1. Распаковывают ехе-шник (тем же UPX, т.к. мы им паковали).
2. Изменяют в ресурсной части названия и прочее.(куча прог для этого есть).
Названия меняют, например, на неприличные :(
3. Сохраняют ехе-шник и запаковывают.
Вредоносного конечно ничего, но интерфейс у конечного пользователя — неприглядный. Просто кто-то поприкалывался, а для нас перед клиентом(который в программировании — есно "без руля") вышло нехорошо.
Выход нашли, но он не есть удобным(размер ехе-шника не уменьшается) :(
 Dr.Phoenix (01-04-2003 22:24:58)
А разве ASPack может распаковавать то, что запаковал? По моему нет.
 Георгий (01-04-2003 23:19:08)
тяжёлый случай.

значит надо, чтоб при ручной распаковке спрашивали пароль?
если денег на это дело не жалко, то вроде AsProtect+AsPack может это делать (хотя и их элементарно "ломают", но тут без SoftIce не обойтись)

А может лучше прогу в дистрибутив с цифровой подписью? или в архив, тоже с цифровой подписью — её вроде ии придумали для обнаружения не санкционированных изменений...

Кстати а какой выход нашли?
 Игорь (02-04-2003 11:35:55)
 — Сам AsPack не распаковывает, но где-то в инете читал, что есть проги, которые распаковывают пакованое AsPack'ом.

- Выход нашли через наложение хэша на ехе-шник внутри него самого и проверки(пересчета и сравнения) этого хэша при входе в программу:
1. Объявляю глоб. константы:
static const char Control[]="Any String";
static const char Hash[8]="00000000";
и собираю ехе-шник.
2. Потом другой прогой ищу метку Control и пересчитываю и пишу 16-байтный хэш в мой ехе-шник.
3. При старте ехе-шник проверяет хэш и запускается/незапускается.
Для надежности проверка вставлена во нескольких местах(что совсем не
накладно).
Т.е. по сути получилось подобие ЭЦП(только в виде хэша)(как Георгий и говорил).
Недостаток — нельзя паковать ехе-шник(а очень хотелось:)), т.к. все "перемешивается" (ни метки ни хеша не найти).
Приходится архивировать и пересылать, но теперь возникают траблы с автообновлением проги.
 Игорь (02-04-2003 11:38:17)
лажанулся — в пункте 2 следует читать "... и пишу 8-байтный хэш ..."
Думал про одно, а написал другое :)
 Георгий (03-04-2003 22:13:13)
А функция для рассчёта хэша реализована в виде макроса?
 Игорь (04-04-2003 17:13:00)
Нет, просто подключатся криптобиблиотека(она — для других целей в программе) с ф-цией хеширования(описана, как обычная экспорт. ф-ция). Хеш стандарта MD4.
Расчитывает 8 или 16-байтный хэш на любой участок памяти/файл.
А что в виде макроса лучше?
 Георгий (06-04-2003 03:18:22)
1. функция проверки (рассчёта хеша) в одном экземпляре (т.е. в виде нормальной функции) — действия взломщика:
- ищем эту функцию
- меняем на что-то вроде
mov eax,0
ret
- в результате реально ничего не вычисляется и не проверяется, но функция говорит, что всё в порядке...
2. в виде макроса — действия взломщика:
- ищем функцию (первую попавшуюся)
- меняем на то, что выше написано
- взломщик думает, что "в результате реально ничего не вычисляется и не проверяется, но функция говорит, что всё в порядке...", а на самом деле чуть позже (когда сработает следующая функция-макрос) опять прога не работает
- если взломщик это увидит, то попробует снова найти это "новую функцию" и т.д., но обычно хулиганы останавливаются на 1 или 2-й защите, а от тех, кому деньги за взлом платят спасаться вроде и не надо...
кстати лучше делать несколько вариантов макросов — чтоб обычнам поиском нельзя было найти и сразу все куски кода отключить...
 Игорь (07-04-2003 17:46:45)
Спасибо за дельный совет, учту.