Защита ActiveMark в игре Robot ArenaDelphi , Программа и Интерфейс , Исследование программЗащита ActiveMark в игре Robot Arena
Activemark тут ваще наглый, дает поиграться тока 10 минут. Это тока робота собрать успеваешь - уже выходить надо. И даже сейвится не дает :( Инструменты: TRW2000 и Hiew Веселая такая это вещь. Айс не любит, причем каким-то способом похожим на тот что в SEPP. FrogSice такого не знает. На OpenProcess отвечает самоуничтожением. Т.е. ни дамп тебе снять ни импорт восстановить... Мне это уже надоедать стало как-то... Все норовят одно и тоже сделать. Раз с айсом под 98 такие проблемы - есть 2 выхода:
1) Уйти в win 2k (там почему-то половина фокусов ActiveMark не пашет) Магическое 2к :) Я решил взять TRW, потому что он у мя был :) А винду надо ставить. Для тех кто не видел TRW: TRW это дебагер по функциональности сравнимый с Softice. Интерфейс один в один, команды тоже на 90% похожи. Многие разработчики защит забывают про это чудо, и направляют все усилия на то чтоб любой ценой поймать айс, чем оставляют огромную дыру для TRW :) Чем хорош TRW? Запускается прям из винды. Т.е. как обычная прога (я знаю что softice из driverstudio тоже можно запустить в manual режиме, а у мя не из DS и еще win98, а не 2k). Когда не нужен - можно его спокойно закрыть и работать без дебагера :) Т.е. запустил прогу без дебагера, а потом запустил TRW и пошел дебагить :) Loader у TRW гораздо круче. Он всегда загружает exe и останавливает на EP, не то что айсовский... пока ему не поставишь атрибут E0000060 на секцию кода - работает через раз :( Чо ж его все не юзают? А потому что сырой он... Нету back trace, нету bpr, proc тоже глючная. Низя делать брейкпоинты с условиями :( И есть еще не мало мелочей софтайса, которые перебивают все достоинства TRW. Жалко что на него(TRW) забили и больше не делают :( Вызывается оно через CTRL-M, ну а выход стабильно F5. Ищем OEP Итак отрубаем айс. Запускаем TRW. Загружаем robot_arena.exe через Loader. Теперь для поисков oep заюзаем такую фичу: указатель стека на OEP(после распаковки) должен быть такой же как и в момент когда EIP=EP (который в PE) Т.е. не выполняем ни одной команды, а ставим bpm ESP-4. Ну дальше F5. Первое срабатывание это явно не то, видно что это все еще код распаковщика... А вот потом начнет срабатывать много раз в коде распаковщика по одному и тому же адресу. Это оно в цикле срабатывает. Тут уже ему нужно помочь. После выхода из цикла оно через JMP прыгнет на кусок где будут несколько циклов. Пролистав вниз можно увидеть команду JMP 479DD5 Это и есть OEP. Тут надо бы прогу зациклить и снять дамп... Но не тут-то. Процдампом не покатит. Прога сразу закроется - это раз. Вовторых вы получите кривой дамп, я так понял этот Activemark гдето запускает чо-то типа thread слежения который все портит :( Дампить надо из TRW. Пришлось найти плагин :) Вот кстати линк на TRW с плагином для дампа: http://hex.warp0.com/trw122.zip Дампер, это конечно хорошо, но тут он глюкавый :) Скока я не пытался, но дампы размером более $A0000 этим дампером у мя сделать не вышло, а иногда даже и такого размера делать не дает... С чем связано - хз. Но сам TRW кричит "No free heap" Так что я просто по кусочкам снял дамп, а потом в волкове соединил. Дальше я сделал дампу Rebuild PE в Procdump и принялся за импорт. Импорт С импортом я задолбался... И так и эдак, и Imprec и Revirgin - нихрена они не работают :( Попробуйте как-нить сами в win 98 восстановите импорт для Activemark защиты этими реконструкторами... Я обиделся на них и начал уже было писать свою прогу для восстановления импорта, но тут пришла мысля: "А чо б не выдрать кусок который импорт создает внутри самого activemark?". IAT начинается с 647000 ну я и сделал bpm 647000 и начал смотреть, когда ж туда начнут записывать адреса API... А происходит это вот тут:
То есть перед тем как прыгнуть к OEP оно создает импорт. Ну так и прекрасно. Сделаем так чтоб entry point был началом создания импорта а дальше прога сама запустится :) Делаем так:
И oep=0064C174. Это я просто глянул какие значения регистров были в оригинальном exe перед созданием импорта и вот так вот тупо их при старте задал :) Все! Импорт есть! Дамп запустился... Вылезла табличка о том что ActiveMark нету - не запущусь :Р Это дело 2 джампов :) Первый = 56А252, Второй = 56A2AC. Главное не дать RaiseException сделать. И все рульно работает. P.S. Если дамп пашет когда проходите дебагером, а когда запускаете файл просто так, то зависает - перезагрузите комп и все будет нормально :) Activemark чо-то такое творит :) P.S.S. Robot Arena на самом деле дважды защищен. Первый слой - распаковка Activemark. Второй слой - сам Activemark(т.е. контроль лицензий и т.д.). И только потом он прыгает на OEP самого Robot Arena. Почему бы не прыгнуть сразу на OEP самого Robot Arena? Не выйдет, т.к. кроме импорта Activemark еще и инициализирует критические секции (Critical Sections) которые Robot Arena уже сразу юзает, не инициализируя. Поэтому приходится проходить через слой Activemark :( P.S.S.S. А ваще игрушка прикольная, по передаче Robotica с Discovery сделана. Строишь боевых роботов, а потом пилишь, режешь, крушишь, протыкаешь насквозь, таранишь... ну в общем хорошо время проводишь :) Защита ActiveMark в игре Robot Arena - это полиморфный вирус, который выводит надпись "Hello World!" и уничтожает мир, после чего дебагер TRW2k может помочь найти OEP. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |