Сейчас на форуме: -Sanchez-, barsik, vasilevradislav, vsv1 (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› Распаковка dll (PEC2) |
Посл.ответ | Сообщение |
|
Создано: 27 марта 2008 11:51 · Личное сообщение · #1 Привет. Собственно появилась необходимость снять PECompact v2.x с dll. До этого с dll дел не имел, что-то зашёл в тупик. Может кто-нибудь описать хотя бы в общем как dll-ку распаковать? У неё же OEP нету, непонятно как потом импорт исправлять. С EXE я импорт imprec'ом правлю - запускаеш пакованный EXE и дальше Find Import и т.д. А с dll как быть? И где оно вообще распаковывается? В DllMain при PROCESS_ATTACH или по другому как-то? В общем опишите кто-нибудь как распаковать dll, можно не очень подробно, только суть, да и не обязательно PEC. И такой ещё вопрос - в природе существуют статические распаковщики для PECompact? Я не нашёл что-то... |
|
Создано: 27 марта 2008 12:14 · Личное сообщение · #2 cppasm Это почему это EP нет у длл? Обычно как раз таки он есть. И при загрузке длл она стартует с EP. Если навешан упаковщик/прот, то скорей всего он (прот/упаковщик) и стартует с EP. Раньше EP может стартовать TLS (так что тоже не забываем про это). Теоретически распаковка длл прикатически похожа на распаковку exe, за исключением правки релоков опосля ----- Computer Security Laboratory |
|
Создано: 27 марта 2008 12:15 · Личное сообщение · #3 |
|
Создано: 27 марта 2008 12:19 · Личное сообщение · #4 По поводу распаковки здесь много инфы вот например --> Link <-- cppasm пишет: как dll-ку распаковать? Грузится в отладчик спокойно. cppasm пишет: У неё же OEP нету очень смешно как это нет что DLL разве не WIN32 приложение? cppasm пишет: как потом импорт исправлять зачем запускать путь остаётся в отладчики на оепе висеть. cppasm пишет: существуют статические распаковщики для PECompact? Я не нашёл что-то... я не сталкивался есчё пока |
|
Создано: 27 марта 2008 12:26 · Личное сообщение · #5 |
|
Создано: 27 марта 2008 12:27 · Личное сообщение · #6 |
|
Создано: 27 марта 2008 12:29 · Личное сообщение · #7 |
|
Создано: 27 марта 2008 13:06 · Личное сообщение · #8 |
|
Создано: 27 марта 2008 13:06 · Личное сообщение · #9 [HEX] пишет: Для тренировки в распаковке длл начни с самого простого. Упакуй UPXом любую дллку и попробуй снять ручками UPX. Так а разница? Там что upx что pec один фиг. Проблема в том что я когда в Olly гружу exe - я стою сразу на EP. Дальше всё понятно. А как в загруженной dll на EP попасть - фиг знает. Ну точнее извратным способом пока только могу. Смотрю EP в бинарнике CFF Explorer'ом, а потом смотрю по какомуадресу загрузились, плюс EP из бинарника и всё. Но может есть человеческий способ... |
|
Создано: 27 марта 2008 13:12 · Поправил: Vovan666 · Личное сообщение · #10 Загружаешь длл в ольку, ставишь бряк hr esp-4, жмешь F9 5-6 раз пока не дойдешь до JMP EAX (это jmp OEP), Открываешь LordPE (или что больше нравится), выбираешь процесс loaddll.exe снизу появятся dll которые этот процесс юзает, дампишь нужную длл, в imprec выбираешь loaddll.exe жмешь Pick DLL и выбираешь нужную тебе. Собственно и всё дальше как с обычным exe если только релоки не надо будет править. |
|
Создано: 27 марта 2008 13:25 · Личное сообщение · #11 cppasm ты че, жмешь F9 после открытия длл в олли??? Сразу после загрузки длл олли стоит на ЕП именно длл, а не ехе. А вот если нажать Ф9 - то попадаешь на еп loaddll.exe Дальше трейсишь как обычный ехе. Не понимаю, чо за проблемы у тебя... ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 27 марта 2008 13:33 · Поправил: cppasm · Личное сообщение · #12 Vovan666 та я так и пытаюсь делать, по сути от exe отличий нет. Только не выходит нифига. После загрузки код странный (привёл ниже). Rascal пишет: ты че, жмешь F9 после открытия длл в олли??? Не, не жму. Может у меня dll какая-то неправильная... Вот что получаю при загрузке в Olly: 10001000 00 DB 00 10001001 00 DB 00 10001002 00 DB 00 10001003 00 DB 00 10001004 00 DB 00 10001005 00 DB 00 10001006 00 DB 00 10001007 00 DB 00 10001008 00 DB 00 10001009 00 DB 00 1000100A 00 DB 00 1000100B 00 DB 00 1000100C 00 DB 00 1000100D 00 DB 00 1000100E 00 DB 00 1000100F 00 DB 00 10001010 00 DB 00 10001011 00 DB 00 10001012 00 DB 00 10001013 00 DB 00 10001014 00 DB 00 10001015 00 DB 00 10001016 00 DB 00 10001017 00 DB 00 10001018 00 DB 00 10001019 00 DB 00 1000101A 00 DB 00 1000101B 00 DB 00 1000101C 52 DB 52 ; CHAR 'R' 1000101D 53 DB 53 ; CHAR 'S' 1000101E 44 DB 44 ; CHAR 'D' 1000101F 53 DB 53 ; CHAR 'S' 10001020 2C DB 2C ; CHAR ',' 10001021 3B DB 3B ; CHAR ';' 10001022 51 DB 51 ; CHAR 'Q' 10001023 A6 DB A6 10001024 E7 DB E7 10001025 A4 DB A4 10001026 8C DB 8C 10001027 4C DB 4C ; CHAR 'L' 10001028 A1 DB A1 10001029 70 DB 70 ; CHAR 'p' 1000102A 2F DB 2F ; CHAR '/' Блин, полазил CFF Explorer'ом. Это очень похоже на resource only dll. Секции такие: .rdata, .rsrc, .reloc Только вот вопросы: 1. нафига тогда .reloc? 2. как его упаковали pec если там кода по сути нету? |
|
Создано: 27 марта 2008 13:43 · Личное сообщение · #13 |
|
Создано: 27 марта 2008 13:59 · Личное сообщение · #14 |
|
Создано: 27 марта 2008 14:02 · Личное сообщение · #15 |
|
Создано: 27 марта 2008 14:42 · Поправил: Rascal · Личное сообщение · #16 control+g -> 1099429F -> ПКМ -> breakpoint -> hardware on execution. дальше рестарт. через сех меняется eip и вписывается jmp blablabla. 10539000 |> /33C0 XOR EAX, EAX ; packed.10539000 судя по всему оеп зы: дампить мона без заморочек в олли. импорта в ресурс длл нету. проверил пеексплорером - ресурсы в норме. распакованная весит 9 с лишним метров =) ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 27 марта 2008 16:37 · Личное сообщение · #17 |
|
Создано: 27 марта 2008 16:46 · Личное сообщение · #18 Rascal Оеп легко можешь проверить! В выделеной памяти под распаковщик 00350888 00400000 pec2gui.00400000 <--- Бинарный поиск им базы два подряд 0035088C 00400000 pec2gui.00400000 00350890 0001B033 <----------OEP RVA 00350894 000000C8 00350898 000388AA 0035089C 00000000 003508A0 00037C80 003508A4 00037C84 003508A8 00000000 003508AC 00000000 003508B0 00031BFA 003508B4 00000884 003508B8 0002E674 <---IAT RVA |
|
Создано: 28 марта 2008 04:35 · Личное сообщение · #19 Bronco пишет: А как правильно её прописать в директориях???? //Где считать за начало, ну и соответственно размер pavka пишет: 00350890 0001B033 <----------OEP RVA 00350894 000000C8 00350898 000388AA 0035089C 00000000 003508A0 00037C80 003508A4 00037C84 003508A8 00000000 003508AC 00000000 003508B0 00031BFA 003508B4 00000884 003508B8 0002E674 <---IAT RVA скрипт var va var iat_st var oep var counter var ImageBase var lbase var simb mov counter,0 gmi eip,MODULEBASE mov ImageBase,$RESULT mov simb,$RESULT rev simb mov simb,$RESULT eval "#0000{simb}0000{simb}#" mov simb,$RESULT gpa "VirtualAlloc","kernel32.dll" bp $RESULT erun rtu mov lbase,eax erun bc eip rtu find lbase,simb cmp $RESULT,0 je quit mov oep,[$RESULT+8] mov iat_st,[$RESULT+30] add oep,ImageBase /* 0035123C 8906 MOV DWORD PTR DS:[ESI],EAX 0035123E 8902 MOV DWORD PTR DS:[EDX],EAX ; kernel32.GetFileType 00351240 83C2 04 ADD EDX,4 */ find eip,#8906890283C20483C604# cmp $RESULT,0 je quit mov [$RESULT],#8B028906# find eip,#034E085156E8????????85C074# cmp $RESULT,0 je quit bp $RESULT+A erun bc eip mov eip,oep cmt eip,"This is the OEP" sub oep,ImageBase mov counter,ImageBase add counter,3C mov counter,[counter] add counter,ImageBase add counter,28 mov [counter],oep add counter,58 mov [counter],iat_st dpe "dump.exe", eip msg ""The file is completely unpacked!" ret quit: ret |
|
Создано: 28 марта 2008 12:48 · Личное сообщение · #20 Bronco пишет: Откуда начинаетЦо понятно, а вот с размером... Размер можешь посчитать разница между окончанием назв. модулей/фунок... и началом Только зачем тебе это? Загрузчику этот параметр по барабану так же как если ты переделаешь тип таблицы из делфи в си и оставишь 004D2154 >7C91188A Љ‘| ntdll.RtlDeleteCriticalSection 004D2158 >7C9010ED нђ| ntdll.RtlLeaveCriticalSection 004D215C >7C901005 ђ| ntdll.RtlEnterCriticalSection 004D2160 >7C809FA1 ЎџЂ| kernel32.InitializeCriticalSection 004D2164 >7C809B14 ›Ђ| kernel32.VirtualFree 004D2168 >7C809A81 ЃљЂ| kernel32.VirtualAlloc 004D216C >7C80995D ]™Ђ| kernel32.LocalFree |
|
Создано: 28 марта 2008 13:58 · Личное сообщение · #21 |
|
Создано: 28 марта 2008 14:33 · Личное сообщение · #22 ManHunter пишет: VMUnpacker распаковал эту dll без проблем. Статичным назвать его конечно нельзя, но обошлось без отладчиков и дампов Спасибо, посмотрю. Меня просто удивило очень что QUnpack не справился - просто падает. А так и руками можно снять - с толку сбило что секции кода там нету. А вообще конкретно тут всё просто оказалось. Поскольку в dll одни ресурсы, то просто загрузил её в Olly, сдампил полностью и пересобрал секцию ресурсов. На этом всё закончилось. |
|
Создано: 28 марта 2008 21:53 · Личное сообщение · #23 |
|
Создано: 28 марта 2008 23:23 · Поправил: cppasm · Личное сообщение · #24 Archer а где можно последний на текущий момент взять? У меня не самый новый, 1.0.5. Через раз то DEP ругается, то Runtime cause program to quit in an unusual way. // Добавлено Нашёл сайт. Скачал, вроди работает. Сейчас по-детальней dll-ку потестирую, но вроди рабочая получается. Если будут косяки я напишу. |
eXeL@B —› Крэки, обсуждения —› Распаковка dll (PEC2) |