Сейчас на форуме: ut2004, vsv1 (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Армадила кусается. Помогите люди добрые.
Посл.ответ Сообщение

Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 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!"

Не знаю что делать, может кто чего посоветует?



Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 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 , Я так понимаю это не восстановленые функции? Что делать дальше ? Неужели с каждой функцией копаться вручную как в статье, может есть более приличный способ?



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 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*




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 18 сентября 2006 00:15
· Личное сообщение · #4

sliderZ пишет:
странное окно вылезло:
"Please dont use cracked version of this software! I have a children to feed!"

Ну дык заплати ему 10$, пусть накормит ребенка
или используй утилиту dilloDIE 1.4 cip-re.6x.to/
Когда распакуешь, по адресу 0040576B поменяй 075h на 0EBh



Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 18 сентября 2006 05:44
· Личное сообщение · #5

Начал ручное восстановление импорта, появились вопросы.

В статье "Быстрая распаковка Armadillo 3.xx" написано:

009C9071 8B15 E4289F00 MOV EDX,DWORD PTR DS:[9F28E4] ; kernel32.77E79F2F
009C9077 83C2 64 ADD EDX,64
009C907A B9 05000000 MOV ECX,5
009C907F 803A CC CMP BYTE PTR DS:[EDX],0CC
009C9082 74 07 JE SHORT 009C908B
009C9084 ^E2 F9 LOOPD SHORT 009C907F
009C9086 FF75 08 PUSH DWORD PTR SS:[EBP+8]
009C9089 FFD2 CALL EDX


# Адрес, который заносится в EDX вводим в командную строку - D “адрес в EDX”. В окне дампа памяти нужно переключиться в режим Disassemble
# Смотрим, что за адрес стоит первым в списке. Это и будет наша искомая оригинальная функция импорта.


Нафига переключаться в режим Disassemble?



Еще непонятки с несколькими функциями возникли:


...
00AB8F66 8B15 10A3AE00 MOV EDX,DWORD PTR [AEA310] (DS:[00AEA310]=F0AA0000)
...
00AB8F8A A7 CMPS DWORD PTR [ESI],DWORD PTR ES:[EDI]
00AB8F8B 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
00AB8F8C F1 INT1
00AB8F8D 18EE SBB DH,CH
00AB8F8F 3808 CMP BYTE PTR [EAX],CL
00AB8F91 FFD2 CALL EDX
...


Чему тут EDX равен?


...
00ABB1EE A1 E09FAE00 MOV EAX,DWORD PTR [AE9FE0]([00AE9FE0]=000004E3)
00ABB1F3 C3 RETN
...


А это что за чудо?


...
00AB7372 55 PUSH EBP
00AB7373 8BEC MOV EBP,ESP
00AB7375 51 PUSH ECX
00AB7376 6A 00 PUSH 0
00AB7378 FF15 D462AD00 CALL DWORD PTR [AD62D4] ; msvcrt.time
00AB737E 59 POP ECX
00AB737F 8945 FC MOV DWORD PTR [EBP-4],EAX
00AB7382 8D4D FC LEA ECX,DWORD PTR [EBP-4]
00AB7385 E8 769CFEFF CALL 00AA1000
00AB738A 25 FFFF0100 AND EAX,1FFFF
00AB738F 0305 2461AD00 ADD EAX,DWORD PTR [AD6124] ; kernel32.ExitProcess
00AB7395 FFD0 CALL EAX
00AB7397 C9 LEAVE
00AB7398 C3 RETN
...


А такую как понять?


...
00AB72F7 55 PUSH EBP
00AB72F8 8BEC MOV EBP,ESP
00AB72FA 83EC 14 SUB ESP,14
00AB72FD 53 PUSH EBX
00AB72FE 56 PUSH ESI
00AB72FF 57 PUSH EDI
00AB7300 6A 00 PUSH 0
00AB7302 FF15 D462AD00 CALL DWORD PTR [AD62D4] ; msvcrt.time
00AB7308 59 POP ECX
00AB7309 8945 FC MOV DWORD PTR [EBP-4],EAX
00AB730C 6A 04 PUSH 4
00AB730E 8D75 EC LEA ESI,DWORD PTR [EBP-14]
00AB7311 5F POP EDI
00AB7312 8D4D FC LEA ECX,DWORD PTR [EBP-4]
00AB7315 E8 E69CFEFF CALL 00AA1000
00AB731A 8906 MOV DWORD PTR [ESI],EAX
00AB731C 83C6 04 ADD ESI,4
00AB731F 4F DEC EDI
00AB7320 ^75 F0 JNZ SHORT 00AB7312
00AB7322 8B45 EC MOV EAX,DWORD PTR [EBP-14]
00AB7325 8B5D ED MOV EBX,DWORD PTR [EBP-13]
00AB7328 8B4D EE MOV ECX,DWORD PTR [EBP-12]
00AB732B 8B55 EF MOV EDX,DWORD PTR [EBP-11]
00AB732E CD 2E INT 2E
00AB7330 5F POP EDI
00AB7331 5E POP ESI
00AB7332 5B POP EBX
00AB7333 C9 LEAVE
00AB7334 C3 RETN
...



Эту как msvcrt.dll:time восстанавливать?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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.




Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 18 сентября 2006 11:02
· Личное сообщение · #7

ARCHANGEL
Попробовал так сделать, адреса функций правда нашел в .rdata , а не data/imports...
Попал в итоге в такое место:

...
00ACC4A1 EB 0F JMP SHORT 00ACC4B2
00ACC4A3 8B85 58C2FFFF MOV EAX,DWORD PTR [EBP-3DA8]
00ACC4A9 83C0 0C ADD EAX,0C
00ACC4AC 8985 58C2FFFF MOV DWORD PTR [EBP-3DA8],EAX
00ACC4B2 8B85 58C2FFFF MOV EAX,DWORD PTR [EBP-3DA8]
00ACC4B8 8378 08 00 CMP DWORD PTR [EAX+8],0
00ACC4BC 74 49 JE SHORT 00ACC507
00ACC4BE 68 00010000 PUSH 100
00ACC4C3 8D85 58C1FFFF LEA EAX,DWORD PTR [EBP-3EA8]
00ACC4C9 50 PUSH EAX
00ACC4CA 8B85 58C2FFFF MOV EAX,DWORD PTR [EBP-3DA8]
00ACC4D0 FF30 PUSH DWORD PTR [EAX]
00ACC4D2 E8 0E61FDFF CALL 00AA25E5
00ACC4D7 83C4 0C ADD ESP,0C
00ACC4DA 8D85 58C1FFFF LEA EAX,DWORD PTR [EBP-3EA8]
00ACC4E0 50 PUSH EAX
00ACC4E1 8D85 68C2FFFF LEA EAX,DWORD PTR [EBP-3D98]
00ACC4E7 50 PUSH EAX
00ACC4E8 FF15 9863AD00 CALL DWORD PTR [AD6398] ; msvcrt._stricmp
00ACC4EE 59 POP ECX
00ACC4EF 59 POP ECX
00ACC4F0 85C0 TEST EAX,EAX
00ACC4F2 75 11 JNZ SHORT 00ACC505

00ACC4F4 8B85 58C2FFFF MOV EAX,DWORD PTR [EBP-3DA8]
00ACC4FA 8B40 08 MOV EAX,DWORD PTR [EAX+8]
00ACC4FD 8985 68CAFFFF MOV DWORD PTR [EBP-3598],EAX
00ACC503 EB 02 JMP SHORT 00ACC507
00ACC505 ^EB 9C JMP SHORT 00ACC4A3
00ACC507 8B85 A8D4FFFF MOV EAX,DWORD PTR [EBP-2B58]
00ACC50D 40 INC EAX
00ACC50E 8985 A8D4FFFF MOV DWORD PTR [EBP-2B58],EAX
00ACC514 EB 37 JMP SHORT 00ACC54D
00ACC516 8D8D 38D9FFFF LEA ECX,DWORD PTR [EBP-26C8]
...


Поменял на 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
Version 4.40a (Public Build)
Protection system (Basic)
!- <Protection Options>
Standard protection or Minimum protection
!- <Backup Key Options>
Fixed Backup Keys
!- <Compression Options>
Better/Slower Compression
!- <Other Options>





Ранг: 89.2 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 18 сентября 2006 12:15
· Личное сообщение · #8

sliderZ пишет:
Что-то мне не везет пока


Наоборот, ты уже почти до самого конца дошёл
Импорт ты восстановил вроде верно, те 8 неопознанных значений - мусор между кусками импорта из разных библиотек - их и надо было удалить...
А насчёт дампа - снимай его по-новой, и каким-нибудь нормальным дампером...

-----
Люблю повеселиться, особенно пожрать




Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 19 сентября 2006 04:09
· Личное сообщение · #9

Ладненько, все распаковал и зарегил, только один вопрос появился насчет Olly.

Допустим в проге у меня есть такая команда


0040576F 68 08994200 PUSH fixed2.00429908 ; ASCII "Crack!"


Ну тык вот, почему если я делаю search for->all referenced text strings , то там этого стринга ( и всех подобных) нету. В дампе тоже нету. Приходится лезть в секцию .rdata на которую ссылается и там искать.
Почему olly не ищет текст сразу во всех секциях и в дампе тоже не все секции сразу подгружены че-то я не пойму?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2006 09:48
· Личное сообщение · #10

sliderZ
А ты левые секции армы отрежь, и тогда у тебя такой вопрос возникнет:"Почему оля в дампе не ищет?", это шутка, конечно, а если серьёзно, то эта такая фигня из-за злобной армы, поэтому юзай Иду и ищи с её помощью свои стринги

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 19 сентября 2006 22:16
· Личное сообщение · #11

sliderZ пишет:
то там этого стринга ( и всех подобных) нету.

Скорее всего оля ищет там, где прошел анализ. Запусти его в этот момент - может что-то добавится.
Правда при повторной загрузке она заорет, что модуль изменился.



Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 20 сентября 2006 02:38
· Личное сообщение · #12

ARCHANGEL

Тык я не понял, чтобы search for->all referenced text strings нормально работал надо секции армы отрезать?


ALL

Ну тык почему в дампе памяти изначально всегда подгружена только секция data(во всех прогах), и по остальным вручную или ctrl+g путешествовать приходиться.


Memory map

00400000 00001000 fixed PE header Imag R RWE
00401000 00028000 fixed .text Imag R RWE
00429000 00005000 fixed .rdata Imag R RWE
0042E000 00023000 fixed .data Imag R RWE
00451000 00050000 fixed .text1 code Imag R RWE
004A1000 00010000 fixed .adata Imag R RWE
004B1000 00020000 fixed .data1 data Imag R RWE <- только эта почему? Хочу все!
004D1000 00050000 fixed .pdata Imag R RWE
00521000 0000B000 fixed .rsrc resources Imag R RWE
0052C000 00002000 fixed .mackt imports Imag R RWE



 eXeL@B —› Вопросы новичков —› Армадила кусается. Помогите люди добрые.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати