Новые шуточки от дяди Солодовникова... в Actual Startup Pro 2.3Delphi , Программа и Интерфейс , Исследование программНовые шуточки от дяди Солодовникова... в Actual Startup Pro 2.3Автор: Hex В последнее время начали попадаться мне проги с аспротектом, да какие-то не понятные. OEP и импорт все как обычно, а дамп зависает на перевом же от OEP call... Хрень прям какая-то... Чтоб не долбаться OEP: 48F2FC IATRVA: 00093164 IATSize: 00000708 Думал импорт кривой - вроде правильный. Начал рассматривать где ж виснет. Виснет в глубинах инициализации при обращении к памяти типа вот так mov ecx,[edx+eax*2] Посмотрел как оно в проге упакованой обращается - обращается туда же но память там уже забита какими-то данными. Я уж начал думать что аспротект инициализацию памяти на себя забирает... Но не в этом то дело :) Все проги, которые я смотрел с таким глюком, были на делфи и решил посмотреть, а как выглядят секции у обычных делфийских прог... И вот что сразу бросилось в глаза: третья секция(BBS) имеет Physical Size = 0! А в полученых дампах секция BBS уже существовала физически(т.е. Physical Size>0) и была заполнена всяким бредом от аспротекта! Вот вам и Rebuild PE... Как же дампить чтоб на такие грабли не наступать? В принципе можно каждый раз тупо менять размер этой секции, но это чо-то не то... Дампить надо сразу после создания импорта, не доходя к OEP. Как это место найти? bpx mapviewoffile после его срабатывания в протекторе bpx getprocaddress. Есть мазохисты которые делают сразу bpx getprocaddress и жмут F5 раз 20-30... не знаю к чему так извращаться если проще отловить аспротект через mapviewoffile, т.к. внутри протектора оно сработает только 1 раз, ну и еще максимум 2 раза перед этим, если какие-нить извратные DLL догрузит из импорта. Тем более первое срабатываение bpx getprocaddress после bpx mapviewoffile - это начало создания импорта. В общем после срабатывания bpx getprocaddress жмем F12 пока не увидим вот такое:
Дальше входим в Call XXXXXXX и идем по ней пока не увидим :
После этого Call [eax] можно брать дамп так как нравится. Дамп будет нормальный и BBS тоже будет впорядке. Импорт тоже можно восстанавливать прямо тут, не дожидаясь пока до оер дойдет. С импортом тут тоже 1 прикол оказался. Теперь даже плагин для определения эмуляций не помагает, т.к. 1 функция все равно не верно определяется. Это функция GetCommandlineA, плагин ее путает с GetVersion. Найти такую неверно определенную функцию очень просто. Восстанавливаем импорт как обычно, а потом ищем в дереве импорта Imprec функцию GetCurrentDirectoryA. Будет типа так:
Так вот этот GetVersion который между GetCurrentDirectoryA и FreeLibrary на самом деле GetCommandLineA. Сколько я прог смотрел везде так было. Теперь про эмуляцию апи. Много шуму вокруг этого поднимали. Апи эмулировать нужно далеко не всегда, если проге есть закриптованные участки то обычно эти апи - это функции чтения ключевого файла. Эмулировать надо если получили дамп, а прога при заходе к примеру в About матерится о том что у нее чо-то не так по такому-то адресу... Как искать их адреса? Многи предлагаю ципляться на bpx Getmodulehandlea if (*(esp+4)==0) и потом листать куда-то... Я так ничего найти не смог поэтому нашел свой способ. При запущеной проге заходим в айс и делаем addr имя_проги, чтоб в ее адресное пространство попасть. Потом делаем поиск в памяти протектора значения imagebase нашей проги. Ну типа если imagebase = 400000 и протектор лежит в районе C00000 - D00000 делаем поиск: s C00000 l 100000 00 00 40 00 00 00 40 00 Там просто рядом с этими апи лежит 2 раза подряд Imagebase. Все. Там ниже под тем местом где найдет будут лежать адреса апи. Как эмулировать расписано в статье "Исследование защиты на основе ASProtect 1.2x" by Kola на www.reversing.net. В Actual Startup Pro 2.3 есть всего 2 апи. Одна читает ключевой файл, а другая - записывает какое-то число в секцию DATA которое потом не юзается. Т.е. тут эмулировать нечего. P.S. Спасибо Kola за наставление на путь истинный :) В статье описывается способ дампирования программ с помощью плагина Actual Startup Pro 2.3, а также методы эмулирования API и обнаружения адресов апи в памяти протектора. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
|||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |