![]() |
eXeL@B —› Протекторы —› Эх, проблемы с ASProtect 1.22 - 1.23 Beta 21 |
Посл.ответ | Сообщение |
|
Создано: 18 июня 2005 04:40 · Личное сообщение · #1 День добрый. Вот уже каой день не могу распаковать ASProtect 1.22 - 1.23 Beta 21 (как говорит PEiD 0.93). Простенькие пакеры распаковываю (aspack, upx) (вручную, конечно), но тут решил попробовать силы в аспре. Прочитал кучу статей про него. Если кто-то желает мне помочь, вот ссылка на прогу: www.messageboardblaster.com/MBBV4.exe инсталлер весит 1 660 807 байт. Вобщем, вот как я пытался распаковать (делал по статьям "Распаковка BVS Solitaire Collection 4.0" и "Распаковка ASProtect 1.23 RC4", взятых с этого сайта). Кстати, в последней статье ссылка на крякми (http://www.alex2kx.nm.ru/aspr123crackme.rar) не работает! А жаль! Сначала bpint 3, Break & Enter , правлю в сайсе eb eip 0x68, bc *, bpm esp-4, и на второй раз (F5) попадаю вот в такой кусок кода: DD62ED POP EBP <--- мы тут DD62EE SUB EBP, 00496FBD DD62F4 LEA ECX, [EBP + 00496FD1] DD62FA ADD ECX, EBX DD62FC MOV [ECX + 01], EAX DD62FF JMP DD6301 <--- Хм... Интересный прыжок... И как я понимаю далее идут "спёртые байты". (Сама прога на дельфях написана.) Ну я их и выписал на листик (13 байт). Затем зациклил сторку DD62FF (a eip; jmp eip) и снял дамп (Dump full) аж двумя тулзами (PE Tools и LordPE), т.к. где-то я вычитал что PE Tools криво дампит. DD6301 55 PUSH EBP DD6302 8BEC MOV EBP, ESP DD6304 83C4F0 ADD ESP, -10 DD6307 53 PUSH EBX DD6308 56 PUSH ESI DD6309 B894354900 MOV EAX, 00493594 DD630E 6851394900 PUSH 493951 DD6313 ret Т.е. в предпоследней строке в стёк занисится адрес, куда сейчас прыгать будем. Там далее идёт 1й call, если мне память не изменяет. Насчёт OEP. Как я понял, OEP это не 493951, а 493951 - 0D (спёртые байты) = 493944. Давайте далее назовём адреса так: OEP1 = 493951 OEP2 = 493944, т.е. учитываем длину спёртых байтов, это ведь и будет РЕАЛЬНЫЙ EP ! Объясню к чему это. Далее я ввожу OEP2 (как в статье "Распаковка BVS Solitaire Collection 4.0", где распаковывают тоже ASProtect 1.22 - 1.23 Beta 21) с учётом ImageBase = 400000 в ImpREC 1.6F (т.е. 93944). Жму "AIT Auto Search", вылазит мессага: "Found address.... (If it is not correct, try RVA: 97000, Size: 4000)". Что в принципе потом и приходится делать. Но! Восстанавливая таблицу импорта (Trace Level 1 и ASProtect 1.22 plugin), восстанавливается ну ооочень мало функций. Хорошо. Пробуем OEP1. Вот ту уже лучше. Size ставлю по-больше, RVA ставлю 9B000. И восстанавливаю очнь много функций. Затем Fix Dump (для 2х дампов). Вставляю в HIEW спёртые байты ровненько начиная с адреса OEP2. Они там как родные. По-любому в PE Editor'e ставлю EP=0093944. Запускаю - злобная мессага говорит, что это не WIN32 приложение (люди, а почему? Я ничего кроме EP не менял в 2х дампах!). Ну долго не думая, в PE Tools жму Rebuild PE. Запускаю - "Программа вызвала ишибку и будет закрыта. Необходимо перезапустить программу. Создан журнал ошибок". Во! Люди, что я делал не так или чего я не сделал? Может всё дело в иморте? Странно, но после всех операций характеристики секций какие-то странные были... Выручайте! ![]() |
|
Создано: 18 июня 2005 09:22 · Личное сообщение · #2 CraZy_DeveLoper Почитай http://exelab.ru/f/action=vthread&forum=1&topic=1965&page= 0 PS Кстати, что за прогу исследуешь, для чего она и т.д. Вообщем, стоит ли скачивать? ![]() ----- Сколько ни наталкивали на мысль – все равно сумел увернуться ![]() |
|
Создано: 18 июня 2005 11:35 · Личное сообщение · #3 |
|
Создано: 18 июня 2005 11:48 · Личное сообщение · #4 |
|
Создано: 18 июня 2005 12:45 · Личное сообщение · #5 |
|
Создано: 18 июня 2005 13:37 · Личное сообщение · #6 Ок. Сейчас прочту тот топик (http://exelab.ru/f/action=vthread&forum=1&topic=1965&page = 0 ). Прога называется Message Board Blaster. Она постит в разных форумах (ну без регистрации которые конечно) вашу мессагу. В базе 500 форумов, а в демо версии - всего-то 10. Но если серийничек ввести, она его в нэте сверит и можно будет заспамить все 500 досок (как я понял база данных уже на винте лежит, а в нэте она тока серийник сверяет). Спросите, зачем надо форумы спамить? Да затем, чтобы в гуглике PageRanking поднять... Дело, конечно чёрное, но я думаю если глянуть на те форумы, что в базе, то они уже лопаются от сама. Ну вот. Теперь все думают что я спаммер... ![]() |
|
Создано: 18 июня 2005 13:43 · Личное сообщение · #7 |
|
Создано: 18 июня 2005 17:06 · Личное сообщение · #8 Ой! Распаковал!!! Я сравнил таблицы импорта и понял, что я не верно определил 2-3 функции! Т.е. как я понял лучше через MapViewOfFile, GetProcAddress делать. Таблицу импорта действительно потом легче восстанавливать. Кстати, а что творится в последних версиях аспра? Чё там солодовников ещё намутил??? Не знаете, где почитать об этом можно? Хех, осталось разобраться с защитой в самой проге. Очень даже забавно ![]() ![]() |
|
Создано: 19 июня 2005 08:29 · Личное сообщение · #9 |
|
Создано: 19 июня 2005 22:43 · Поправил: agentru · Личное сообщение · #10 |
|
Создано: 20 июня 2005 09:54 · Личное сообщение · #11 >> Где же рабочая ссылка на прогу? В инете куча кряков, серийников к ней, но ее самой не видно (невооруженным глазом). А что, ссылка не работает? Ну тогда лезьте сюда: www.messageboardblaster.com/ там в разделе даунлоадс предложат ввести ваше мыло, на которое будет выслан линк на файл, но ссылка на файл будет (по-моему) такая: www.messageboardblaster.com/MBBV4.exe Может (?) всё дело в кукизах? Могу выложить прогу на *.h15.ru сайт. === Хмм... Ну распаковал я её... Только вот одного понять не могу. Запакованная прога запускается только 3 раза (вот такой вот триал!) и перед запуском "думает" 1-3 секунды. Если триал заканчивается, то вылазит TTrialForm. На 4й раз. Если удалить трашрегом (TrashReg.exe) подозрительные ключи и в реестре удалить HKCU\SOFTWARE\ASProtect, то триал сбрасывается и прога работает как нивчём не бывало. Видимо автор проги доверился Солодовникову и весь механизм триала возложил на плечи аспра (???). Так вот. После распаковки прога запускается, но вылазит окно TTrialForm, но не как не основная форма. Я пробовал и в другой винде запускать, и отслеживал обращения к файлам/реестру (она создаёт зачем-то ключик с именем USE2, но не помню где), но запускаться не хочет (то самое окно об окончании триала вылазит). А вот оригинальный упакованный файл запускается отлично! Что же получается, эта прога CRC проверяет??? Как сказал плагин "Krypto Analyzer" к PEiD, там есть и BlowFish, и CRC32, и Base64 table. Как я понимаю, блоуфиш нужен чтобы распаковать бд с форумами, Base64 видимо для чего-то там в области HTML, JS (не уверен), а вот CRC32 зачем? Т.е. можно предположить, что прога при запуске проверяет ЦРЦ и если оно не верное, то вылазит так междупрочим, не при делах триал-окно. НО! А как она сверяет контрольную сумму, если прогу потом запаковали аспром? Кстати, уж очень много, по словам filemon.exe, распакованная прога сама к себе обращается! Вот не могу понять. Наверное, проще было бы сверять размер файла чем CRC (если размер проги < 600 Kb то запуститься, иначе триал окно). Вобщем, реально ли отследить почему вылазит триал-окно? Можно ли исправить TTrialForm.Show() на TMainForm.Show() (дельфи уже совсем забыл...)? А что за call'ы вызываются в начале прог, написанных на дельфи? Их штук 8 вначале, а если последний пройти по F10 в айсе, то появляется окно... Видимо в последнем калле ![]() Могу дать ссылку на распакованный exe. Может кто-нибудь заинтересуется взломом, или как принято говорить "Исследованием защиты программ"... То, что в нэте много кряков - значит я плохо искал, но хотелось бы преобрести немного опыта по "исследованию" защиты..... Короче. как я понимаю, надо сделать так: 1. Чтобы появилась главная форма 2. Попробовать зарегать прогу или битхакнуть её 3. Как гриццо, Enjoy!!! ![]() |
|
Создано: 20 июня 2005 10:02 · Личное сообщение · #12 |
|
Создано: 20 июня 2005 12:56 · Личное сообщение · #13 >> Bitfry пишет: Не файл, а вся страница. ===== Эээ..... Т.е вся страница не доступна??? Чё-то я догнать не могу, у вас www.messageboardblaster.com/ не открывается? Возможно, если вы из России (а я из Беларуси), то они айпишники палят и не пускают, шоб прогу их не скачивали и не ломали кул хацкеры... Попробуйти через проксю залезть. Немного оффтопика: Я тут DS 3.2 день назад поставил (почти все компоненты), там такая цаца SoftICE 4.3.2 (билд 2485), и IceExt 0.67 поставил, но ниодна команда его не работает. Пишу !dumpscreen и сайс пишет что Invalid command. Не знаете, почему? Не хотел просто отдельный топик создавать. Как заставить IceExt работать? И ещё сайс ошибочку при загрузке пишет: Error: SoftIce is missconfigured. Set KDHeapSize = 0x8000 parameter of type REG_SZ under NTIce registry key. Чуть ниже: NTICE: Unload MOD=ICEEXT См. мой конфиг в аттачменте. И почему-то сайс по BPINT 3 не вылазит!!! Жму Break & Enter (PE Tools) а сайс спит!!! Что за шуточки такие? Хотя другие бряки работают, но пока только успел попробовать bpx MessageBoxA. Хотя... погодите. Написал в сайсе I3HERE ON и теперь всё в порядке... Тогда такой вопрос. Break&Enter пишет: Type "bpint 3" in Softice. Dont forget type "eb eip 0x60" after debugger pop-up. Раньше я так и делал, но теперь не надо вводить bpint 3 и не надо ничего менять (eb eip 0x60). Это почему интересно? И ещё вопросик. А нельзя ли как-то в айсе сделать так, чтобы он "замораживал" приложение. Т.е. точно также как a eip; jmp eip; "заморозить" приложение, чтобы в браузере (с подгруженной статьёй по "исследованию защит") полосу прокрутки прокрутить, а потом восстановить ту команду которую затёр EB FE ? Нету таких команд в сайсе? ![]() ![]() |
|
Создано: 20 июня 2005 13:35 · Личное сообщение · #14 |
|
Создано: 20 июня 2005 15:09 · Личное сообщение · #15 |
|
Создано: 20 июня 2005 15:37 · Личное сообщение · #16 CraZy_DeveLoper Видимо в последнем калле надо изменить какой-то переход, чтобы появилась главная форма, а там уж по обстоятельствам Вобщем, реально ли отследить почему вылазит триал-окно? настоятельно рекомендую установить полную версию ASProtect (с примерами!) так вот а папке Examples находятся примеры триального приложения, в т.ч. и на Delphi вся фишка в том, что для проги стандартный режим - конец триала, а не полная версия лишь после упаковки аспром, он сам меняет точку входа на "полный" вариант следовательно, для того, чтобы запускать программу в полном режиме, нужно 1. Найти процедуру (startup), соответствующую полной версии программы (обычно в дизасм листинге она находится где-то вблизи основной точки входа), для этой цели лучше использовать DeDe или PE Explorer, они хорошо отображают структуру Delphi приложения. самый простой спооб - это найти вызов TMainForm[она же TReggedForm ;], проследить, где идёт вызов, и самая верхняя (по цепочке) функция - как раз то, что нужно. отличительная особенность - эта функция будет "одинока", т.е. на неё ничто не будет ссылаться 2. Изменить точку входа на найденный адрес функции (startup) 3. Пофиксить потенциальные вызовы распакованной проги чисто аспровых АПИ типа GetRegistrationInformation и GetTrialDays. EnJoy! ----- EnJoy! ![]() |
|
Создано: 21 июня 2005 02:15 · Поправил: Модератор · Личное сообщение · #17 Ура!!! Почти ломанул! Я скачал PE Explorer 1.95 (и 1.97) , но вместо дизасемблированного кода появляются строки типа
Хотя другие проги, написанные на дельфи открываются нормально! Ну я решил не париться, а слил сигнатуры к IDA на Delphi7/6. Вот это красота!!!
Вот это да! Короче, как я понял, ф-я _fastcall Forms::TApplication::CreateForm(System::TMetaClass *,void *) создёт (инициализирует, вызывает Form.OnCreate событие, ИМХО) класс, переданный в edx (там ещё мои каменты). Затем результат помещается, например в первом случае, mov ecx, ds:dword_496594, т.е. сам результат в ds:496594. Во-первых, не все формы создаются (7 из 12). Ну я в IDA посмотрел референсы на CreateForm, нашёл все остальные вызовы. Я нашёл место, где вызывается CreateForm для TMainForm. Самое интересное то, что ссылок на это место просто не было (как Jupiter и говорил)! Ну потом всё элементарно: bpx xxxxx; p ret; и бряк на команду до xxxxx. А там что-то типа того (в самом начале проги, до вызова остальных CreateForm:
Пара нопов, и правим call на то, что надо. Всё! Видим главную прогу. Но тут ещё немного надо подрихтовать. Прога уверена, что "Trial mode. -1 Exesutions left" ![]() Просто очень тяжело понять: как она определяет, она в триал моде или нет? Я и bpm'ы ставил, а они гады не срабатывали, и пытался дубликаты ф-й найти. Просто посмотрев в IDA на TMainForm.OnCreate(), то там как не странно в один из лейблов такая строчка заносится: "%d Executions Left", а рядом вааще нигде нет ниодного джампа! Т.е. это наводит на мысль, что возможно где-то есть ещё одна такая ф-я (TMainForm.OnCreate) которая хотя бы делает невидимым этот лейбл (либо заносила в него пустую строку)... Но я не нашёл такую ф-ю, а искал по референсам других ф-й. Что посоветуете? Кстати, очень хороший тутор можно сделать! ![]() |
|
Создано: 21 июня 2005 03:26 · Личное сообщение · #18 CraZy_DeveLoper поздравляю, ты всё правильно понял ;) то, что у тя под рукой оказалась IDA - прекрасно, этот вариант всегда предпочтительнее теперь по поводу закачки файла: я неоднократно пытался зайти на указанный тобой сайт, но всё бестолку (прокси не помогает) поэтому: выложи инсталятор в доступное место типа рапидшары ----- EnJoy! ![]() |
|
Создано: 21 июня 2005 09:24 · Личное сообщение · #19 |
|
Создано: 21 июня 2005 12:23 · Личное сообщение · #20 |
|
Создано: 21 июня 2005 13:52 · Личное сообщение · #21 Всем привет! Вот залил я файлик сюда: h++p://www.reu.h15.ru/MBBV4.rar Тока там архив, запароленный, пароль: "helloworld" без кавычек. Архив не битый, лично проверял. Кстати, можете заценить и сам сайтик. Моя работа (кроме флеша, это был флеш-шаблон, я в нём не особо секу). Правда, флешки весят ~300 Kb, долго грузятся. Это типа мой курсач. Я вот что-то понять не могу. В одном из примеров аспра (папка \ASProtect 1.23 RC4\Trial\Delphi\DFM) в файле normal.pas есть такие строки:
Вопрос: а как это всё работает? Т.е. как я понимаю, аспр просто вставит набор ф-й например в другую (новую) секцию в exe файл, и затем подопытное приложение будет эти ф-и оттуда вызывать? Я прав? У меня просто дельфи под рукой нет (вернее есть, тока диск запоротый, на днях куплю. Кстати, какой лучше купить (Delphi 5, 6, 7, 8?)). И если это действительно так, то можно ведь найти все call'ы, которые обращаются в секцию аспра и подумать зачем они тут нужны... Ещё вопрос. В этой программе (Message Board Blaster) чтобы зарегаться надо вести рег номер, подрубиться в нэт, нажать "Activate", она коннэктится к серванту и сверяет номер. Затем если всё удачно, записывает его в реестр и просит перезапуститься. Как думаете, этот серийник при запуске программы вообще хоть проверяется по какому-нибудь алгоритму? У меня такое чувство, что где-то хранится информация о том, активирован ли номер а вот проверка его, возможно возложена на аспр либо вообще отсутствует (а вдруг программер настолько ленивым оказался?). Но в этом я не уверен, надо просо ещё часок - другой посидеть... Может действительно проще серийник правильный найти? А если после распаковки ввести верный серийник, может ли быть так, что он всё равно окажется невалидным из-за полумёртвого аспра? ![]() |
|
Создано: 21 июня 2005 22:15 · Личное сообщение · #22 |
|
Создано: 23 июня 2005 16:06 · Личное сообщение · #23 CraZy_DeveLoper Вот залил я файлик сюда: www.reu.h15.ru/MBBV4.rar спасибо, будет время - гляну Кстати, можете заценить и сам сайтик. Моя работа (кроме флеша, это был флеш-шаблон, я в нём не особо секу). Правда, флешки весят ~300 Kb, долго грузятся. хорошо, что про флэш предупредил, т.к. я его терпеть не могу, особенно когда он6 без альтернативы на сайте. одно дело мульты - другое дело сайт. IMO. Вопрос: а как это всё работает? в предыдущих версиях аспра: аспровые апи экспортировались защищаемым exeшником, аспр находил в таблице экспорта свои функции и переадресовывал их на себя в последних версиях аспра: аспровые функции, напротив, импорируются из аспровой библиотеки aspr_ide.dll т.о. появляется возможность отлаживать приложение, используюя упомянутую библиотеку (она в точности эмулирует работу аспра) при релизе проги она упаковыается аспром, а в таблице импорта убирается ссылка на aspr_ide.dll, аспр опять же подменяет её вызовы своими. в данном случае, если прога была защищена аспром, выпущенным в начале 2005 года (v2.0), то возможен инлайн патч этой проги, юзая аспровые API при помощи ASPRAPI by Spiteful. в последнем случае адреса аспровых апи подменяются твоими, и ты можешь передавать через апи проге всё, что угодно наиболее важными являются следующие API: GetRegistrationInformation (передаётся инфа о рег. пользователе и (в последних версиях) ключ) GetTrialDays (общее/оставшееся кол-во дней) - если прога зарегена, то передаётся 1 и 1 по поводу версии Delphi: чем выше версия, тем больше мусора в exeшнике Ghisler, автор TotalCommander, например, использует версию 2.0 ;) в любом случае подойдёт любая версия. остальное касается эстетических предпочтений. хотя и дельфовые проги можно писать так, что размер получается не гигантский (по этому вопросу обращаться к Ms-Rem ;) ----- EnJoy! ![]() |
![]() |
eXeL@B —› Протекторы —› Эх, проблемы с ASProtect 1.22 - 1.23 Beta 21 |