Сейчас на форуме: _MBK_ (+6 невидимых) |
![]() |
eXeL@B —› Основной форум —› ExeCryptor 2.0.x - 2.3.x OEP finder script by HAGGAR |
Посл.ответ | Сообщение |
|
Создано: 25 апреля 2007 03:45 · Личное сообщение · #1 haggar Some time ago I was trying to make script that would reach OEP in ExeCryptor targets. I didn't finish it but this one should bypass all tricks in EC targets so after running it you should be able to run any EC target (maybe not the 2.3.9 , I'm not sure for that one) under Olly. Script should also give you clue how to avoid all tricks in EC manually. Note that script patches some APIs and if target crushes than it is not that EC has detected you, but just application wanted to use those APIs. It never happened to me, but it is possible. ![]() ![]() |
|
Создано: 25 апреля 2007 08:14 · Личное сообщение · #2 |
|
Создано: 25 апреля 2007 09:50 · Личное сообщение · #3 |
|
Создано: 25 апреля 2007 09:57 · Личное сообщение · #4 |
|
Создано: 25 апреля 2007 10:20 · Личное сообщение · #5 |
|
Создано: 25 апреля 2007 11:54 · Личное сообщение · #6 YDS пишет: OEP в моем представлении - это OEP ;) - адрес, с которого начинает выполняться распакованная программа, Подробней с какого адреса? У HAGGAR начинается к примеру 004D2AB8 -E9 81560D00 JMP EXECrypt.005A813E 004D2ABD 45 INC EBP 004D2ABE 91 XCHG EAX,ECX ; EXECrypt.005A8100 004D2ABF 3D 6F43525F CMP EAX,5F52436F 004D2AC4 35 92C3E6E9 XOR EAX,E9E6C392 004D2AC9 DA87 0900D6AD FIADD DWORD PTR DS:[EDI+ADD60009] 004D2ACF 9E SAHF 004D2AD0 D7 XLAT BYTE PTR DS:[EBX+AL] ![]() |
|
Создано: 25 апреля 2007 14:21 · Личное сообщение · #7 |
|
Создано: 25 апреля 2007 14:31 · Личное сообщение · #8 |
|
Создано: 25 апреля 2007 15:42 · Личное сообщение · #9 pavka пишет: Подробней с какого адреса? У HAGGAR начинается к примеру У меня останавливается на адресе 77xxxxx, т.е. в системной библиотеке. Пробовал на: iuVCR, WMV Direct, DBF Viewer 2000, Advanced Diary. Ну да и ладно, для меня в функционале скрипта важнее фикс антиотладки. С распаковкой сабжа сильно никогда не заморачивался - всегда проще и надежнее заинлайнить; будет нужно до OEP и руками дойду. ![]() |
|
Создано: 25 апреля 2007 16:46 · Личное сообщение · #10 lord_Phoenix пишет: А ты все сделал как написано в комментариях? Отож ![]() ![]() Попробуй на чем-нибудь свежем, может у тебя заработает ![]() YDS пишет: Ну да и ладно, для меня в функционале скрипта важнее фикс антиотладки. С распаковкой сабжа сильно никогда не заморачивался - всегда проще и надежнее заинлайнить; будет нужно до OEP и руками дойду. У меня стопится в дебрях ntdll. Как дойти до STOLEN_OEP_CODE руками ? на soc попасть немогу, а попадаю только на код после... ![]() |
|
Создано: 25 апреля 2007 16:50 · Личное сообщение · #11 Spate пишет: Попробуй на чем-нибудь свежем, может у тебя заработает Да, на самом свежем не работает ![]() YDS пишет: Ну да и ладно, для меня в функционале скрипта важнее фикс антиотладки. С распаковкой сабжа сильно никогда не заморачивался - всегда проще и надежнее заинлайнить; будет нужно до OEP и руками дойду. Солидарен ----- Тут не могла быть ваша реклама ![]() |
|
Создано: 25 апреля 2007 18:29 · Личное сообщение · #12 YDS пишет: будет нужно до OEP и руками дойду. Инлайн оставим в покое ;) К примеру в твоем списке Advanced Diary что в ней оеп или столен оеп как ты будешь доходить что в ней считать оеп с какого места начинает выполняться распакованная программа прога не Борланд си .... 006AC404 68 28EB7F00 PUSH Advanced.007FEB28 ; ASCII "___CPPdebugHook" 006AC409 6A 00 PUSH 0 006AC40B E8 26DD0E00 CALL Advanced.0079A136 ; JMP to kernel32.GetModuleHandleA 006AC410 50 PUSH EAX ; Advanced.00400000 006AC411 E8 32DD0E00 CALL Advanced.0079A148 может это принять 00B34ACB /EB 10 JMP SHORT Advanced.00B34ADD 00B34ACD |66:623A BOUND DI,DWORD PTR DS:[EDX] 00B34AD0 |43 INC EBX 00B34AD1 |2B2B SUB EBP,DWORD PTR DS:[EBX] 00B34AD3 |48 DEC EAX 00B34AD4 |4F DEC EDI 00B34AD5 |4F DEC EDI 00B34AD6 |4B DEC EBX 00B34AD7 |90 NOP 00B34AD8 -|E9 00401DE9 JMP E9D08ADD 00B34ADD -\E9 00330B59 JMP 59BE7DE2 или это 005002A0 55 push ebp 005002A1 8BEC mov ebp,esp 005002A3 83C4 F4 add esp,-0C 005002A6 53 push ebx 005002A7 56 push esi 005002A8 57 push edi 005002A9 8B75 08 mov esi,dword ptr ss:[ebp+8] 005002AC 8B46 10 mov eax,dword ptr ds:[esi+10] в отношении криптора это место чисто гипотетическое.... ![]() |
|
Создано: 25 апреля 2007 19:03 · Личное сообщение · #13 pavka пишет: К примеру в твоем списке Advanced Diary что в ней оеп или столен оеп как ты будешь доходить что в ней считать оеп с какого места начинает выполняться распакованная программа прога не Борланд си .... Ничего не понял. Это вопросы? Хоть бы знаки препинания расставил ;) Задачу дойти до OEP в этой проге я и не ставил - просто констатировал, что у меня он останавливается на адресе в ntdll - кино, если интересно, в аттаче. ![]() ![]() |
|
Создано: 25 апреля 2007 19:37 · Личное сообщение · #14 |
|
Создано: 25 апреля 2007 19:46 · Личное сообщение · #15 |
|
Создано: 26 апреля 2007 03:55 · Личное сообщение · #16 junk.WoLFeR пишет: pavka имелл ввиду что для криптора ОЕП можеш выбрать где угодно там кагбы ОЕП очень уж размазаное понятие. ;) Где угодно это конечно сильно сказано, но достаточно много мест с которых можно дампить и искать данные необходимые для инициализации Вот сто пишет автор: haggar Today, 12:51 PM Post #5 I think that OEP finder feature will not be possible to include in script. Simply, way how ExeCryptor jumps to OEP is different even in same version of protector. And there are no hard ground to relay. Sometimes ExeCryptor checks is breakpoint on OEP, sometimes not. Sometimes it overwrites OEP jump (stolen code) again with same byte in order to erase possible breakpoint. In most cases it doesn't do anything. Just junk and more junk. ![]() |
|
Создано: 26 апреля 2007 14:19 · Личное сообщение · #17 |
|
Создано: 26 апреля 2007 14:40 · Личное сообщение · #18 |
|
Создано: 26 апреля 2007 14:55 · Личное сообщение · #19 |
|
Создано: 26 апреля 2007 16:38 · Личное сообщение · #20 r99 пишет: oep? (можно по памяти) Вот егошная оеп, адреса валидны для unpacked target. написана на MSVC++ 7 Если ничего не путаю, украдены байты с 43D4CB по 43D51D, т.е. 54h --- .0043D4CB: 6A60 push 000000060 ;'`' .0043D4CD: 68D8224700 push 0004722D8 --↓1 .0043D4D2: E8A5350000 call .000440A7C --↓2 .0043D4D7: BF94000000 mov edi,000000094 ;' Ф' .0043D4DC: 8BC7 mov eax,edi .0043D4DE: E8DD370000 call .000440CC0 --↓3 .0043D4E3: 8965E8 mov [ebp][-18],esp .0043D4E6: 8BF4 mov esi,esp .0043D4E8: 893E mov [esi],edi .0043D4EA: 56 push esi .0043D4EB: FF15B4924600 call GetVersionExA ;kernel32 .0043D4F1: 8B4E10 mov ecx,[esi][10] .0043D4F4: 890DAC0E4900 mov [00490EAC],ecx .0043D4FA: 8B4604 mov eax,[esi][04] .0043D4FD: A3B80E4900 mov [00490EB8],eax .0043D502: 8B5608 mov edx,[esi][08] .0043D505: 8915BC0E4900 mov [00490EBC],edx .0043D50B: 8B760C mov esi,[esi][0C] .0043D50E: 81E6FF7F0000 and esi,000007FFF ;' ⌂ ' .0043D514: 8935B00E4900 mov [00490EB0],esi .0043D51A: 83F902 cmp ecx,2 .0043D51D: 740C je .00043D52B --↓4 .0043D51F: 81CE00800000 or esi,000008000 ;' А ' .0043D525: 8935B00E4900 mov [00490EB0],esi .0043D52B: C1E008 4shl eax,8 .0043D52E: 03C2 add eax,edx .0043D530: A3B40E4900 mov [00490EB4],eax .0043D535: 33F6 xor esi,esi .0043D537: 56 push esi .0043D538: 8B3DE4924600 mov edi,GetModuleHandleA ;kernel32 .0043D53E: FFD7 call edi .0043D540: 6681384D5A cmp w,[eax],05A4D ;'ZM' .0043D545: 751F jne .00043D566 --↓5 --- Если ошибся поправьте. ![]() |
|
Создано: 26 апреля 2007 17:09 · Личное сообщение · #21 |
|
Создано: 26 апреля 2007 22:33 · Личное сообщение · #22 |
|
Создано: 27 апреля 2007 07:38 · Личное сообщение · #23 r99 пишет: все верно и даже совпадает по форме с другим екзешником из полного дистрибутива (поленился сразу посмотреть на него) Microsoft Visual C++ 7.0 [Debug] -- по peid ![]() OEP это всё фигня... подскажите лучше как инлайнить гп 2.3.9+, прыгаю на инлайн после процедуры восстановления call'ов, проверяю распаковалась-ли секция, если да, патчу вервый thread C3 или EBFE, и ... после запуска ничего не происходит, процесс висит в памяти. До патча треда, он хотябы MB выдавал, а сейчас ничего. p.s. можно в ЛС. ![]() |
|
Создано: 27 апреля 2007 09:12 · Личное сообщение · #24 |
|
Создано: 27 апреля 2007 10:17 · Личное сообщение · #25 |
|
Создано: 27 апреля 2007 12:30 · Личное сообщение · #26 |
|
Создано: 27 апреля 2007 17:51 · Личное сообщение · #27 Hellspawn пишет: помоему там первый поток не надо трогать Я не потрогал, патчу второй, пускаю прогу, в итоге fault, память не может быть written ![]() pavka пишет: Имхо все лишние треды до оеп можно убивать подскажи как... pavka пишет: или EBFE Вот он и висит что хотел то и получил... если RET пишу тоже висит. ![]() |
|
Создано: 27 апреля 2007 18:19 · Личное сообщение · #28 |
|
Создано: 27 апреля 2007 18:57 · Личное сообщение · #29 |
|
Создано: 27 апреля 2007 19:58 · Поправил: YDS · Личное сообщение · #30 |
![]() |
eXeL@B —› Основной форум —› ExeCryptor 2.0.x - 2.3.x OEP finder script by HAGGAR |