link5254 link5255 link5256 link5257 link5258 link5259 link5260 link5261 link5262 link5263 link5264 link5265 link5266 link5267 link5268 link5269 link5270 link5271 link5272 link5273 link5274 link5275 link5276 link5277 link5278 link5279 link5280 link5281 link5282 link5283 link5284 link5285 link5286 link5287 link5288 link5289 link5290 link5291 link5292 link5293 link5294 link5295 link5296 link5297 link5298 link5299 link5300 link5301 link5302 link5303 link5304 link5305 link5306 link5307 link5308 link5309 link5310 link5311 link5312 link5313 link5314 link5315 link5316 link5317 link5318 link5319 link5320 link5321 link5322 link5323 link5324 link5325 link5326 link5327 link5328 link5329 link5330 link5331 link5332 link5333 link5334 link5335 link5336 link5337 link5338 link5339 link5340 link5341 link5342 link5343 link5344 link5345 link5346 link5347 link5348 link5349 link5350 link5351 link5352 link5353 link5354 link5355 link5356 link5357 link5358 link5359 link5360 link5361 link5362 link5363 link5364 link5365 link5366 link5367 link5368 link5369 link5370 link5371 link5372 link5373 link5374 link5375 link5376 link5377 link5378 link5379 link5380 link5381 link5382 link5383 link5384 link5385 link5386 link5387 link5388 link5389 link5390 link5391 link5392 link5393 link5394 link5395

Форум — Ответы     (  К темам )
 ?  Игорь: Прога для сжатия ехе-шников (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)
Спасибо за дельный совет, учту.