![]() |
eXeL@B —› Протекторы —› UPX 0.80 - 0.84 ... или ExeCryptor2 ?? |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 30 октября 2005 17:11 · Поправил: Модератор · Личное сообщение · #1 Сейчас поймал себя на факте,что я не могу распаковать UPX ![]() Значит программа: PowerArchiver http://www.3dnews.ru/download/arch/powerarchiver/ ...упакована,как говорит PEiD, данным упаковщиком версии 0.80 - 0.84 . Как говорится,что тут распаковывать?Но сколько я не долблюсь с ней,у меня ничего не получается. Дело в том,что я там никак не могу найти привычных команд типа: call XXXXXXXX popad jmp XXXXXXXX ; <- прыжок на OEP После EP выполняется какой-то колоссальный код,который напичкан дальними переходами,вследствие чего происходит постоянное метание из последней секции ("a26losg3") в другую ("v0lowmiu").Под конец этих метаний потихоньку начинает запускаться программа,но такое впечатление,что при этом управление не передаётся в секцию кода("CODE") ![]() Сам UPX упакованный файл не может распаковать. Сам же использую SoftIce. В общем,хотелось бы услышать какие-нибудь мысли по этому поводу. ----- the Power of Reversing team ![]() |
|
Создано: 01 ноября 2005 01:32 · Личное сообщение · #2 |
|
Создано: 01 ноября 2005 08:39 · Поправил: Smon · Личное сообщение · #3 |
|
Создано: 01 ноября 2005 09:20 · Личное сообщение · #4 |
|
Создано: 01 ноября 2005 09:22 · Личное сообщение · #5 Сорри за дубль, но оказывается нельзя добавлять аттачи к исправляемым сообщениям ![]() ![]() ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels ![]() |
|
Создано: 01 ноября 2005 10:02 · Личное сообщение · #6 |
|
Создано: 01 ноября 2005 11:21 · Личное сообщение · #7 |
|
Создано: 01 ноября 2005 12:45 · Личное сообщение · #8 |
|
Создано: 01 ноября 2005 13:03 · Поправил: Smon · Личное сообщение · #9 |
|
Создано: 01 ноября 2005 13:36 · Личное сообщение · #10 Парни, это ес-но не ExeCryptor но ина ОЕР так просто не выйдешь, оно размазано по секциям! Вот кусок кода: 004079C0 53 PUSH EBX 004079C1 8BD8 MOV EBX,EAX 004079C3 33C0 XOR EAX,EAX 004079C5 A3 D4B07D0>MOV [DWORD DS:7DB0D4],EAX 004079CA 6A 00 PUSH 0 004079CC E8 2BFFFFF>CALL <JMP.&kernel32.GetModuleHan> 004079D1 A3 68067F0>MOV [DWORD DS:7F0668],EAX это первый CALL в дельфи, встаем на 004079C0 53 PUSH EBX и смотрим адрес возврата: 0012FFA4 00CDB16A RETURN to POWERARC.00CDB16A from POWERARC.00A7DBF5 мы имеем дело с какой то самопальной защитой ----- Подписи - ЗЛО! Нужно убирать! ![]() |
|
Создано: 01 ноября 2005 13:39 · Личное сообщение · #11 |
|
Создано: 01 ноября 2005 13:44 · Личное сообщение · #12 nice Я почему то вылез тут 00404D00 55 PUSH EBP
![]() |
|
Создано: 01 ноября 2005 13:59 · Личное сообщение · #13 |
|
Создано: 01 ноября 2005 14:06 · Личное сообщение · #14 Z0oMiK Это не ОЕР! И так, если вспомнить ОЕР в дельфе, то выглядит это примерно так: PUSH EBP MOV EBP,ESP ADD ESP,xxx MOV EAX,00XXXXXX CALL 004079C0 - когда мы проваливаемся в эту ф-ию то ЕАХ=007DA1BC я решил проискать в ЕХЕ: B8BCA17D00 и не нашел, я подумал, и запустил трэйс: TC EAX==007DA1BC вот куда меня выбросило: 00A9F982 A9 0081C054 TEST EAX,54C08100 00A9F987 3A7A BA CMP BH,[BYTE DS:EDX-46] 00A9F98A 81C8 D3C4B1CD OR EAX,CDB1C4D3 00A9F990 81C0 C9A2C912 ADD EAX,12C9A2C9 00A9F996 ^E9 A2D0FDFF JMP POWERARC.00A7CA3D вот тут ЕАХ=007DA1BC следовательно чистого ОЕР в программе нет ----- Подписи - ЗЛО! Нужно убирать! ![]() |
|
Создано: 01 ноября 2005 14:38 · Личное сообщение · #15 |
|
Создано: 01 ноября 2005 14:39 · Личное сообщение · #16 |
|
Создано: 01 ноября 2005 15:24 · Личное сообщение · #17 |
|
Создано: 02 ноября 2005 00:21 · Личное сообщение · #18 |
|
Создано: 02 ноября 2005 02:38 · Личное сообщение · #19 |
|
Создано: 03 ноября 2005 16:23 · Личное сообщение · #20 |
|
Создано: 03 ноября 2005 16:30 · Личное сообщение · #21 |
|
Создано: 06 ноября 2005 19:34 · Личное сообщение · #22 |
|
Создано: 06 ноября 2005 19:42 · Личное сообщение · #23 |
|
Создано: 06 ноября 2005 19:44 · Личное сообщение · #24 |
|
Создано: 07 ноября 2005 07:37 · Личное сообщение · #25 Не знаю, что это за хрень, но было интересно. Метод Рикардо с GetModuleHendleA рулит прекрасно. ОЕР: 00A73E40 E8 7B3B99FF CALL dump_1.004079C0 Единственно там нет кол-ва циклов Call EAX, по этому ОЕП должно выглядить так: 00A73E39 > B8 985A7D00 MOV EAX,dump_1.007D5A98 00A73E3E 90 NOP 00A73E3F 90 NOP 00A73E40 E8 7B3B99FF CALL dump_1.004079C0 Прога падает при закрытии тут: 00405100 89D6 MOV ESI,EDX 00405102 8B13 MOV EDX,DWORD PTR DS:[EBX] 00405104 85D2 TEST EDX,EDX 00405106 74 1A JE SHORT dump_1.00405122 00405108 C703 00000000 MOV DWORD PTR DS:[EBX],0 0040510E 8B4A F8 MOV ECX,DWORD PTR DS:[EDX-8] 00405111 49 DEC ECX 00405112 7C 0E JL SHORT dump_1.00405122 00405114 F0:FF4A F8 LOCK DEC DWORD PTR DS:[EDX-8] 00405118 75 08 JNZ SHORT dump_1.00405122 0040511A 8D42 F8 LEA EAX,DWORD PTR DS:[EDX-8] Необходимо просто изменить на JMP: 00405106 /EB 1A JMP SHORT dump_1.00405122 Импорт восстанавливается без проблем. И всё прекрасно рулит. Это всё по английской версии. Есть предложение попробовать распаковать программу предложенную в топике "Попытка исследования Internet AccesMonitor" автор топика закрыл его, видимо ему уже всё ясно, но я так до конца и не разабрался. Особенно интересна антиотладка-палит всё. Импорт тоже изуродован. Это программа запакована подобным пакером. Может попробуем? ![]() |
|
Создано: 07 ноября 2005 12:42 · Личное сообщение · #26 |
|
Создано: 07 ноября 2005 14:51 · Личное сообщение · #27 Не помню где брал. Кажется у Esteta. Дасловно так: "Так, теперь нам нужно найти ОЕР. Простейший способ, который пришёл в голову – подумать про API, которые обычно вызываются сразу же после старта программы. В некоторых компиляторах используются GetModuleHandleA вскоре после ЕР, в других (как в VB) мы имеем TthurnMain, в Delphi также идёт GetModuleHandleA как первый call, и т.д. Нам нужно будет испробовать несколько API: GetModuleHandleA, GetVersion, DialogBoxParamA, и т.д. (хотя этих трёх должно хватить). Я использую такой метод потому, что, если, стоя на ЕР пакера, поставить ВРМ on Access на первой секции кода (как описано в туторе по SEtools2g – примеч. Estet), мы задолбаемся жать F9 из-за постоянных бряков. Также можно использовать "Method of the ice lolly of Ricardo Narvaja" ![]() |
|
Создано: 07 ноября 2005 22:07 · Личное сообщение · #28 |
|
Создано: 08 ноября 2005 07:52 · Личное сообщение · #29 «А в ответ тишина» и «Тихо сам с собою я веду беседу» Попробуем. Про TLS всё есть у Риккардо. С антиотладкой пока не как, может быть в процессе кто подскажет. Остановились здесь: 00899320 /0F85 65230000 JNZ Internet.0089B68B 00899326 |55 PUSH EBP 00899327 |51 PUSH ECX 00899328 |9C PUSHFD Теперь попробуем метод Риккардо с GetModuleHendleA для нахождения ОЕР. Первая остановка здесь: 0012F9A0 0089B9B9 /CALL to GetModuleHandleA from Internet.0089B9B3 0012F9A4 004FD958 \pModule = "kernel32.dll" Если посмотреть, то видно, что создаётся какой-то импорт, далее: 0012F9A0 0089B9B9 /CALL to GetModuleHandleA from Internet.0089B9B3 0012F9A4 004FD9D4 \pModule = "user32.dll" Далее: 0012F97C 00711453 /CALL to GetModuleHandleA from Internet.00711451 0012F980 006F1D94 \pModule = "kernel32.dll" Далее программа просто завершается. Но перед тем как завершится она восстанавливает две функции, тем самым мы можем определить как она вообще это делает. Мне показалась, что прога не использует GetProcAddress для этих целей и даже не эмулирует его. А делает это по классической схеме вируса, т.е. находит библиотеку по имени, затем по базе и по смещению определяет место в библиотеке где находятся названия функций, затем по своему алгоритму крипует имя функции и сравнивает в цикле со своей криптованной сигнатурой. При совпадении она находит прыжок в IAT этой библиотеки, соответствующий данной функции и именно адрес этого прыжка вставляет в свою IAT. Все это можно видеть по адресам: 005С95АС, 006F9755, 006F1DB0 ( тут в ESP-C находится название искомой функции), 005Е5210 (тут записываем адрес перехода в стек), 006F116Е( записываем в нашу IAT). Какие будут соображения? ![]() |
|
Создано: 08 ноября 2005 14:02 · Личное сообщение · #30 В принципе Сайз грузится при запущенной программе, видно что происходит постоянный вызов функций типа OpenProcess. Пытался после бряка на эту функцию зациклить прогу, а потом просто ImportRECом восстановить импорт, но он не может открыть процесс. Почему? OpenProcess не перехвачен. В Сайзе один поток, а если приаттачить к Ольге там два. В принципе библиотеки можно подгрузить исскуственно, но может кто сталкивался? Может то связано SECURITY_ATTRIBUTES? ![]() |
|
Создано: 08 ноября 2005 21:20 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
![]() |
eXeL@B —› Протекторы —› UPX 0.80 - 0.84 ... или ExeCryptor2 ?? |