eXeL@B —› Протекторы —› ASProtect 1.22-1.23 Beta 21 |
. 1 . 2 . 3 . 4 . >> |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2005 00:01 · Личное сообщение · #1 Доброго всем времени суток! Недавно решил попробовать распаковать ASProtect,обчитался уже всяких статей,но так и не выходит... Значит цель - Advanced Registry Tracer 2.01 http://www.elcomsoft.com/download/art.zip Размер - 778240 байт Пытаясь найти OEP,пробую делать так: в SoftIce останавливаюсь на EP(00401000),далее bpx MapViewOfFile,точка останова срабатывает,удаляю её,bpx GetProcAddress,и программа вместо того,чтобы прерваться на GetProcAddress,просто стартует.Вопрос как такое может быть? Пытался также делать следующее: останавливаюсь в SoftIce на EP,набираю bpm esp-4,далее F5,оказываюсь тут: PUSHAD CALL 0062A00A JMP 45BFA4F7 PUSH EBP RET ... ...если нажать F5 ещё раз - запустится программа,а что делать в этом куске кода - ума не приложу,т.к. в распаковке я ещё совсем зелёный . Очень надеюсь на какие-нибудь советы,разъяснения с вашей стороны,господа. ----- the Power of Reversing team |
|
Создано: 13 апреля 2005 00:35 · Личное сообщение · #2 DillerInc пишет: в распаковке я ещё совсем зелёный А в определении размера дистриба DillerInc пишет: Размер - 778240 байт а там - 1,7 Мб (по твоей ссылке). Стыдно, товарищ, стыдно... Еще не скачал, но DillerInc пишет: PUSH EBP RET возможно EBP - адрес ОЕР. Но, пока не скачаю, точно не скажу... ----- Сколько ни наталкивали на мысль – все равно сумел увернуться |
|
Создано: 13 апреля 2005 00:54 · Личное сообщение · #3 |
|
Создано: 13 апреля 2005 12:13 · Личное сообщение · #4 |
|
Создано: 13 апреля 2005 16:55 · Личное сообщение · #5 |
|
Создано: 13 апреля 2005 21:41 · Личное сообщение · #6 В общем,если,как предлагает crEL,трассировать(F8) после EP,пройти таким образом PUSHAD и зайти в процедуру CALL 0062A00A,а затем ввести bpm esp-4,то программа прервётся чуть ниже: PUSH DWORD PTR [EBP+0000091D] JMP 0062A057 ... Если посмотреть,что содержится в [EBP+0000091D],то оказывается - ... GetProcAddress,GetModuleHandleA,LoadLibraryA ... ...может именно поэтому я не могу отловить вызов функции GetProcAddress? Одним словом,что дальше-то делать? Ruller Качается по твоей ссылке уж больно медленно... ----- the Power of Reversing team |
|
Создано: 14 апреля 2005 20:09 · Личное сообщение · #7 DillerInc Делай так: Тормози на EP, далее по F10 до PUSHAD CALL 0062A00A ;тут тормозни и bpm esp-04 JMP 45BFA4F7 PUSH EBP RET 19 раз жми F5, попадешь сюда :00EC4CC1 5D POP EBP ........... ;немного кода и перед REt'ом увидишь спертые байты 55 PUSH EBP 8BEC MOV EBP, ESP 83C4F4 ADD ESP, -0C B854F85200 MOV EAX, 0052E854 Дальше выходишь по RET и попадешь сюда: :00EC4661 60 PUSHAD :00EC4662 9C PUSHFD :00EC4663 FC CLD :00EC4664 BF7746EC00 MOV EDI, 00EC4677 :00EC4669 B953010000 MOV ECX, 00000153 :00EC466E F3AA REPZ STOSB :00EC4670 9D POPFD :00EC4671 61 POPAD :00EC4672 E940B566FF JMP 0052FBB7 <= типа OEP Импорт легко импреком ЗЫ. а после bpx MapViewOfFile у меня нормально тормозит на GetProcAddress |
|
Создано: 14 апреля 2005 22:41 · Личное сообщение · #8 crc1 Благодарю за участие! Действительно удалось пройти к OEP,как ты подсказал,вот только "импорт легко" у меня не получается "легко" . В общем,программу зациклил на команде JMP 0052FBB7,снял дамп.Затем загружаю в ImpRec,ну и появляется масса всего,нажимаю Auto Trace - что-то появляется,но львиная доля этих указателей остаётся недоступной. Не мог бы ты подробно описать твои действия в данном случае? ----- the Power of Reversing team |
|
Создано: 15 апреля 2005 08:21 · Личное сообщение · #9 |
|
Создано: 15 апреля 2005 10:25 · Личное сообщение · #10 DillerInc Тормозни на MapViewOfFile, потом на GetProcAddress (если у тебя все же не получается тормознуться на GetProcAddress, тогда ставь bpx 00EB2319, но это выход только для данной проги ) Попадешь сюда :00EB2319 MOV[EBP-08], EAX два раза F12, будешь тут :00EB2688 CALL 00EB22E0 :00EB268D CALL 00EB251C => будешь тут (Этот CALL занопить) :00EB2692 MOV EDX, [EDI] => в EDX начало таблицы импорта (005A11B8) ну а дальше отличная статья от -= ALEX =- http://www.exelab.ru/art/arc4.php или у HEX'а http://www.exelab.ru/art/hex_asprtime.php При восстановлении импорта ипользуй плугин для импрека ASProtect 1.22.dll Еще попробуй примочку AsprDbgr_build_106.exe 7db7_IAT.rar |
|
Создано: 15 апреля 2005 18:04 · Личное сообщение · #11 crc1 ...кстати,у тебя случайно не стоит какого-нибудь IceExt или ещё чего?А то у меня просто ни в какую не хочет останавливаться на функции GetProcAddress(ни на имени функции,ни на её адресе) . А так,принцип данной распаковки я уже более или менее понял,за что всем огромное спасибо! ----- the Power of Reversing team |
|
Создано: 15 апреля 2005 22:09 · Личное сообщение · #12 |
|
Создано: 15 апреля 2005 22:59 · Личное сообщение · #13 |
|
Создано: 16 апреля 2005 18:48 · Поправил: DillerInc · Личное сообщение · #14 Атас! После длительных боёв со всеми reverse-недоразумениями мне всё-таки удалось прижжучить эту функцию GetProcAddress(помог IceExt,с которым и велись основные бои ).Вооружившись статьёй от -=ALEX=-,я прошёл тот путь до того самого POPAD,где зациклил программу и снял дамп. Теперь вопрос: в той статье предлагается запускать в ImpRec всё ещё зацикленную программу -> так необходимо делать всегда при работе с ASProtect либо только тогда,когда неизвестен OEP(как в данном случае в этой статье)?Ну,или можно просто запустить саму программу и её подгрузить в ImpRec? Далее вопрос к уважаемому crc1: кстати,небольшая поправочка: crc1 пишет: 00EB2319 ...по-моему,по адресу 00EC2319 . Ближе к делу,я просмотрел твой IAT.txt,где обнаружил следующие данные: OEP - 0012FBAC IATRVA - 001A11B4 IATSize - 000008C0 ...а как же OEP(0012FBB7),указанный выше?Или IATRVA(001A11B8)[начало таблицы импорта],опять-таки указанный выше? ----- the Power of Reversing team |
|
Создано: 16 апреля 2005 19:46 · Личное сообщение · #15 |
|
Создано: 17 апреля 2005 19:25 · Личное сообщение · #16 crc1 В общем,наконец-то я её распаковал . Но всё-таки почему у тебя IATRVA = 001A11B4,а не 001A11B8 - значение,которое узнаётся в отладчике как начало таблицы импорта?И как ты получил IATSize = 000008C0? Дело в том,что сначала я решил сам поковырять импорт - восстановил все функции,в окошке OEP было 0012FBAC,в RVA 001A11B8,a в Size 00004000,далее восстановил спёртые байты,проверил EP,но распакованная программа отказывалась запускаться,вываливаясь с ошибкой.Когда же я подгрузил в ImpRec твоё "дерево" и сделал всё оставшееся,то программа без проблем запустилась . ----- the Power of Reversing team |
|
Создано: 18 апреля 2005 11:36 · Личное сообщение · #17 DillerInc IATRVA = 001A11B4 это из-за разделителя(я так думаю:s5, т.е. адрес первой ф-ии (GetCurrentThreadId) - 001A11B8 минус разделитель (4 байта) = 001A11B4, адрес последней ф-ии (CloseServiceHandle) - 001A1A6C плюс 4 байта (длина адреса) плюс разделитель (4 байта) = 001A1A74. 001A1A74 минус 001A11B4 = 000008C0. Это импрек так пишет, но реально начало первой ф-ии - :001A11B8 Я при восстановлении в импреке OEP оставил какой есть - 1000h, Size поставил 1500h, RVA - 001A11B8 Восстановил все ф-ии, потом лишнее отрезал и привинтил к дампу. Ты наверное какую-то ф-ию неверно определил, потому и не запускается (сравни свое "дерево" и мое) DillerInc пишет: -> так необходимо делать всегда при работе с ASProtect либо только тогда,когда неизвестен OEP(как в данном случае в этой статье)?Ну,или можно просто запустить саму программу и её подгрузить в ImpRec? Зная адрес начала IAT мона и так и эдак, НО, зациклившись на POPAD, и предварительно занопив :00EB268D CALL 00EB251C (в случае ART 2.01) по адресу :00EB268D где происходит перенаправление вызовов АПИ, во-первых ты получишь относительно чистый импорт(цитирую -= ALEX =-'а), во-вторых когда в импреке не восстановятся несколько ф-ий(штук 6), ты записав их адреса, не отходя от кассы жмешь ctrl-D, попадаешь в отладчик и смотришь, какие ф-ии эмулируються по этим адресам. Потом восстанавливаешь правленые байты и шлепаешь до OEP, попутно глянув на спертый код. Короче, сплошная экономия времени Если адреса IAT не знаешь, тогда цикли на OEP и в импреке пиши реальный OEP проги, а начало IAT импрек сам определит Во блин понаписал... ЗЫ. Для тренировки попробуй прогу Kassy 0.3 h++p://www.stampz.ru/kassy/index.html, там тоже простой АСПР |
|
Создано: 18 апреля 2005 22:43 · Личное сообщение · #18 crc1 Ну,что...продолжим тему ... Последовав твоему совету начал исследование программы Kassy 0.3d : значит с импортом проблем вроде бы не возникло(файл "дерева" приложил в аттаче),но вот с OEP я тут совсем запутался.Сделать аналогично предыдущему варианту не удаётся,программа походу написана не на Delphi,следовательно стартовый код вероятно немного отличается,и такое чувство,что он(спёртые байты)находится не в одном месте,а раскидан по этому аспровскому мусорному коду. В общем,бедлам какой-то у меня с этим OEP . Не мог бы ты что-нибудь присоветовать,прояснить ситуацию? P.S. Кстати,тот OEP в "дереве" неправильный - это мне PEiD такой предложил. 3779_kassy03d_IAT.txt ----- the Power of Reversing team |
|
Создано: 19 апреля 2005 12:27 · Личное сообщение · #19 DillerInc DillerInc пишет: программа походу написана не на Delphi Именно походу на делфях, поэтому стыренные инструкции будут такими же push ebp mov ebp, esp add esp, -XX mov eax, XXXXXXXX А разница в том, что это разные версии АСПРА и выход к OEP другой. Ты прав, эти инструкции спрятаны в мусорном коде, их надо найти (подскажу, значение, которое передается в EAX, на OEP будет лежать в регистре EBX) До OEP двигайся так: вствай на EP, BPM ESP-04, два раза F5, попадешь акурат в мусорный код, дальше по F8 до перврго PUSH EBP(первая краденая команда), двумя инструкциями ниже увидишь две остальные, дальше пили до RET (здесь запиши значение EBX), потом еще один RET и выйдешь в код проги на JMP [xxxxxxxx], прыгай и попадешь опять в код АСПРА, из него по F10 до RET, попадешь в код проги, выходи из этой процедуры и окажешься почти на OEP ADD [EAX], AL ADD [EAX], AL ADD [EAX], AL CALL XXXXXXXX MOV EBX, [XXXXXXXX] => тут окажешься Выше, вместо нулей нужно крад. байтики привинтить, ну и OEP поправить соответственно Короче все как у Alex'а, только mov eax, XXXXXXXX немного по другому |
|
Создано: 19 апреля 2005 20:00 · Личное сообщение · #20 crc1 Получилось походу так: OEP = 00097F4D PUSH EBP MOV EBP, ESP ADD ESP, -10 MOV EAX, 00497D34 ... Иными словами,выражаю огромную благодарность за помощь и советы! P.S. Да вот ещё,имеется ли какая-то разница в написании третьей команды(ADD ESP, -10 или SUB ESP, 10)относительно работоспособности получаемой распакованной программы?Обе ведь вроде бы в таком виде занимают по 3 байта... ----- the Power of Reversing team |
|
Создано: 22 апреля 2005 18:58 · Личное сообщение · #21 Господа,снова всех приветствую! Значит,дело вот в чём - хотелось бы почитать какие-нибудь статьи по распаковке ASProtect 1.2x - 1.3x [Registered].Кто-то рекомендует в данном случае читать статьи nice'a или Bit-hack'а,но там рассматривается использование отладчика OllyDebugger,а хотелось бы использовать SoftIce.Говорят,на reversing.net есть статья Mario555,но то ли сайта уже такого нет то ли не знаю... В общем,было бы здорово,если бы кто-нибудь дал какую-нибудь ссылку по этой теме или просто посоветовал что-нибудь. ----- the Power of Reversing team |
|
Создано: 22 апреля 2005 22:20 · Личное сообщение · #22 |
|
Создано: 23 апреля 2005 14:38 · Личное сообщение · #23 |
|
Создано: 25 апреля 2005 13:55 · Личное сообщение · #24 Ладно,отложим пока в сторону всякие там [Registered],а вместо этого дело такое: решил я поковыряться во всем известном ASPack 2.12,т.к. он согласно PEiD'у тоже запакован ASProtect 1.22-1.23 Beta 21.Импорт восстановился без проблем,далее OEP кажись нашёл по адресу 0044289С... ... POPAD JMP EAX // EAX = 0044289C ... Причём OEP походу настоящий,т.к. там сразу идут такие команды: PUSH EBP MOV EBP,ESP ADD ESP, -0C CALL CALL ... В чём собственно загвоздка - где же команда MOV EAX, XXXXXXXX,присутствует ли она тут вообще и где найти то значение,передаваемое в регистр EAX?Правильно ли я вообще всё сделал? ----- the Power of Reversing team |
|
Создано: 28 апреля 2005 11:21 · Личное сообщение · #25 |
|
Создано: 29 апреля 2005 15:28 · Поправил: DillerInc · Личное сообщение · #26 aL MIR Для начала это будет выглядеть примерно так: импорт восстанавливается без особых проблем ImpRec'ом. Далее,чтобы найти OEP,я делал так,используя SoftIce: останавливаюсь на точке входа,чуть-чуть трассирую F10 до следующего места... PUSHAD CALL 005E700A <- стоим тут,ставим точку останова bpm esp-4 JMP XXXXXXXX ...жмём F5 19 раз...и оказываемся тут... POP EBP SUB EBP,004B0123 .... Это мусорный код,весьма "оживлённый".Трассируем его с помощью F8.Насколько я понимаю,в этом коде разбросаны спёртые команды.По крайней мере три из них можно точно определить,трассируя этот мусор и наткнувшись через небольшое время на команду... PUSH EBP // двумя командами ниже видим две другие команды ... ... MOV EBP,ESP SUB ESP,00000014 Теперь я затрудняюсь ответить - есть ли там ещё какие-то спёртые команды и надеюсь,что кто-нибудь из знатоков прояснит ситуацию. Однако далее. Рубим этот мусор до команды ret и смотрим,что находится в регистре EBX - (004C4E94) - это значение возможно используется в спёртой команде... MOV EAX,XXXXXXXX Значит выходим по ret и попадаем сюда: PUSHAD PUSHFD ... трассируем это с помощью F10,выходим по ret и тут же прыгаем дальше по команде JMP [XXXXXXXX] Попадаем в код ASProtect -> ret -> небольшой код программы -> ret -> ...и оказываемся тут... CALL 00406A78 XOR EAX,EAX <- тут Я так понимаю,здесь рядом должен быть OEP.Выше команды CALL имеются нули,но...их чего-то больно уж много ,поэтому тут я взываю к остальным участникам форума,чтобы разрешить эту ситуацию с непонятным количеством спёртых байт. 1893_cwpro_IAT.txt ----- the Power of Reversing team |
|
Создано: 02 мая 2005 14:06 · Личное сообщение · #27 |
|
Создано: 02 мая 2005 23:31 · Личное сообщение · #28 |
|
Создано: 02 мая 2005 23:47 · Личное сообщение · #29 |
|
Создано: 03 мая 2005 00:02 · Личное сообщение · #30 DillerInc пишет: Давайте начнём с ASPack'а,в моём посте выше причина загвоздки вроде ясно определена. В твоем посте выше описывается распаковка непонятной проги в ответ на еще вышестоящий пост. А по твоему посту:DillerInc пишет: В чём собственно загвоздка - где же команда MOV EAX, XXXXXXXX,присутствует ли она тут вообще и где найти то значение,передаваемое в регистр EAX?Правильно ли я вообще всё сделал? Ты вообще про какую команду? У тебя чистое ОЕР, никаких спертых байт, с импотром все ОК (судя по посту), так что еще нужно? |
. 1 . 2 . 3 . 4 . >> |
eXeL@B —› Протекторы —› ASProtect 1.22-1.23 Beta 21 |