![]() |
eXeL@B —› Вопросы новичков —› Армадила кусается. Помогите люди добрые. |
Посл.ответ | Сообщение |
|
Создано: 17 сентября 2006 03:01 · Личное сообщение · #1 Решил значит я изучить японский язык... Скачал замечательную программу: Read and Write Hiragana. Тут www.declan-software.com/japanese/japanese_hiragana.htm (2mb). Решил ее сразу вылечить, PEID говорит armadillo 3.71-4.xx. Прочитал пару статей по armadillo. Запустил в olly, поставил bp на секции .text, еще пробовал bp SetProcessWorkingSetSize. Короче оба варианта после прохождения всех exceptions приводят к крашу, olly вылетает. Попробовал еще штук 10 скриптов по распаковке армы, ни один не сработал, после одного из скриптов вобще какое-то странное окно вылезло: "Please dont use cracked version of this software! I have a children to feed!" Не знаю что делать, может кто чего посоветует? ![]() |
|
Создано: 17 сентября 2006 04:55 · Личное сообщение · #2 Ладно, с крашами разобрался, просто установил hide debugger plugin. Теперь не вылетает ![]() Дальше все делал по статье "Быстрая распаковка Armadillo 3.xx" Поставил bp на .text дальше пошел пока не выпал memory when executing, сделал olly dump без rebuild import. Дамп вроде норм получился, peid говорит c++ 7.0. Вроде осталось только импорт восстановить. Загрузил Imprec-> IAT auto search-> get imports. Появился один thunk valid:no Внутри пара сотен функций из низ много вида rva:xxx ptr:xxx , Я так понимаю это не восстановленые функции? Что делать дальше ? Неужели с каждой функцией копаться вручную как в статье, может есть более приличный способ? ![]() |
|
Создано: 17 сентября 2006 07:20 · Личное сообщение · #3 sliderZ пишет: Внутри пара сотен функций из низ много вида rva:xxx ptr:xxx , Я так понимаю это не восстановленые функции? Что делать дальше ? Неужели с каждой функцией копаться вручную как в статье, может есть более приличный способ? Это вполне нормально. Вот эти rva:xxx ptr:xxx надо опознавать, сначала можно Show Invalid и AutoTrace или Trace Level 1 (Dasm), а всё что останется - вручную, отрезая мусор (Cut thunks). ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 18 сентября 2006 00:15 · Личное сообщение · #4 |
|
Создано: 18 сентября 2006 05:44 · Личное сообщение · #5 Начал ручное восстановление импорта, появились вопросы. В статье "Быстрая распаковка Armadillo 3.xx" написано: 009C9071 8B15 E4289F00 MOV EDX,DWORD PTR DS:[9F28E4] ; kernel32.77E79F2F
# Адрес, который заносится в EDX вводим в командную строку - D “адрес в EDX”. В окне дампа памяти нужно переключиться в режим Disassemble
Нафига переключаться в режим Disassemble? Еще непонятки с несколькими функциями возникли:
Чему тут EDX равен?
А это что за чудо?
А такую как понять?
Эту как msvcrt.dll:time восстанавливать? ![]() |
|
Создано: 18 сентября 2006 06:45 · Личное сообщение · #6 sliderZ Скорее всего, дело в том, что арма эта версии 4.хх, т.к. скажу тебе, как никому, что арму третьей версии сейчас мало где можно откопать. Попробуй просканить арму с помощью опции External Scan в PeID и убедишься в этом. По поводу невосстановленных функций скажу так - метод в статье "Быстрая распаковка Armadillo 3.xx" древний, как вся моя жизнь, сделай лучше так: Стоя на ОЕР, открой карту памяти и найди секцию, в которой импорт находиться (по мнению отладчика), она будет подписана как import,data или что-то наподобие. Далее найди там в куче всех API адресов валидных функций невалидный адрес и поставь на него аппаратный бряк на запись, перезапускай прогу и прервёшся на команде, которая будет этот адрес записывать, далее прокрути вверх в поисках такого кода: pop ecx pop ecx test eax,eax jnz "адрес" как найдёшь, переправь прыг на безусловный, т.е. на jmp, теперь весь последующий импорт будет нормальным, но надо будет ещё эту исследуемую функцию подправить, поэтому ставь на этот переход бряк (аппаратный) на выполнение и перезапускай прогу. А потом опять смени переход на абсолютный и всё пучком. Это, конечно, прокактит, если там IAT Elimination, тогда с импортом всё будет более жёстко, тогда я бы посоветовал читать тьюторы Нарваи, а на счёт dilloDIE 1.4 или даже 1.6 версии, то он мне не нравится тем, что потом приходится юзать ArmAccess.dll, а это не хорошо, как мне кажется. Я бы посоветовал тебе скачать Armadillo find protected 1.3 и посмотреть, что у тебя там за опции защиты ![]() ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 18 сентября 2006 11:02 · Личное сообщение · #7 ARCHANGEL Попробовал так сделать, адреса функций правда нашел в .rdata , а не data/imports... Попал в итоге в такое место:
Поменял на JMP,перезапустил, убрал hw bp, запустил, прога померла с сообщением "debugged program was unable to process exception". Ну залез в IMPrec попробовал GET Import, все равно получилось 8 unresolved pointers (до этого 30 получалось). Это те же самые функции которые я сам распознать не смог(выше писал)... Попробовал cut все 8 потом fix dump и тут еще беда какая-то вылезла "Not enough space: cant add any section to this dump file!". Что-то мне не везет пока ![]() Armadillo find protected пишет: !- Protected Armadillo
![]() |
|
Создано: 18 сентября 2006 12:15 · Личное сообщение · #8 sliderZ пишет: Что-то мне не везет пока Наоборот, ты уже почти до самого конца дошёл ![]() Импорт ты восстановил вроде верно, те 8 неопознанных значений - мусор между кусками импорта из разных библиотек - их и надо было удалить... А насчёт дампа - снимай его по-новой, и каким-нибудь нормальным дампером... ----- Люблю повеселиться, особенно пожрать ![]() |
|
Создано: 19 сентября 2006 04:09 · Личное сообщение · #9 Ладненько, все распаковал и зарегил, только один вопрос появился насчет Olly. Допустим в проге у меня есть такая команда
Ну тык вот, почему если я делаю search for->all referenced text strings , то там этого стринга ( и всех подобных) нету. В дампе тоже нету. Приходится лезть в секцию .rdata на которую ссылается и там искать. Почему olly не ищет текст сразу во всех секциях и в дампе тоже не все секции сразу подгружены че-то я не пойму? ![]() |
|
Создано: 19 сентября 2006 09:48 · Личное сообщение · #10 sliderZ А ты левые секции армы отрежь, и тогда у тебя такой вопрос возникнет:"Почему оля в дампе не ищет?", это шутка, конечно ![]() ![]() ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 19 сентября 2006 22:16 · Личное сообщение · #11 |
|
Создано: 20 сентября 2006 02:38 · Личное сообщение · #12 ARCHANGEL Тык я не понял, чтобы search for->all referenced text strings нормально работал надо секции армы отрезать? ALL Ну тык почему в дампе памяти изначально всегда подгружена только секция data(во всех прогах), и по остальным вручную или ctrl+g путешествовать приходиться.
![]() |
![]() |
eXeL@B —› Вопросы новичков —› Армадила кусается. Помогите люди добрые. |