eXeL@B —› Протекторы —› unpack securom |
<< . 1 . 2 . 3 . |
Посл.ответ | Сообщение |
|
Создано: 05 июля 2007 23:39 · Личное сообщение · #1 я создал тему в разделе для новичков http://exelab.ru/f/action=vthread&forum=5&topic=9277 пакер SecuROM 4.x.x.x - 5.x.x.x -> Sony DADC посмотрел секции: CWFR FWFR .asrc .ojff .apypwk .idata Говорят что это пакер по сложности не уступает Themida Знаю, на сайте есть две статьи про распаковк securom, но чт-то мне не очень понятно. Буду благодарен, если кто посмотрит exe-ник. http://ifolder.ru/2578939 |
|
Создано: 27 июля 2007 23:30 · Личное сообщение · #2 Mavlyudov пишет: 0040EECB 8946 10 MOV DWORD PTR DS:[ESI+10],EAX ...так ты уже проскочил настоящее OEP...между прочим. Ты вообще программу инсталлировал на жёсткий диск??И что значит запускал "с одним exe-шником"?? Нормально запускай защищённый файл из той директории,куда установлена программа. ----- the Power of Reversing team |
|
Создано: 28 июля 2007 13:13 · Личное сообщение · #3 |
|
Создано: 28 июля 2007 13:27 · Личное сообщение · #4 |
|
Создано: 28 июля 2007 14:15 · Поправил: Mavlyudov · Личное сообщение · #5 |
|
Создано: 29 июля 2007 10:50 · Личное сообщение · #6 Mavlyudov И всё-таки я думаю,что у тебя палится отладчик,потому как иначе трудно объяснить,почему у тебя так происходит. Вот,попробуй поставить этот плагин для ольки.Попробуй с ним,так сказать,поиграться,когда загрузишь программу в отладчик и будешь стоять на EP. c33e_29.07.2007_CRACKLAB.rU.tgz - hidedbg_by_xDREAM.rar ----- the Power of Reversing team |
|
Создано: 31 июля 2007 01:42 · Поправил: Mavlyudov · Личное сообщение · #7 Начну с хороших новостей: я нашел ОЕР. Но импорт еще не восстановил. Мои попытки это сделать не увенчались успехом, Поэтому расскажу, как я это делал, чтобы была возможность меня поправить. Заодно покритикую(в хорошем смысле) статьи Ra$cal’а и Cigan’а. Итак, я стою на ОЕР. 00553258 55 PUSH EBP Сразу снимаю 2 дампа: один с галочкой Rebuild Import, другой без. Cigan пишет, что чуть ниже ОЕР "видим первый CALL ведущий в не куда" Вот как он выглядит у меня: А вот куда он ведет (сомневаюсь, что это то самое "не куда", хотя кто знает): 00407093 90 NOP 00407094 53 PUSH EBX Продолжим. Трассирую F7 со входом в call: Попадаю в секцию библиотек 7C573DFC > 55 PUSH EBP Жму Alt+F9 и попадаю опять в код проги: 004070A5 A3 18F75500 MOV DWORD PTR DS:[55F718],EAX ; EGU.00400000 Поднимаюсь на команду выше 004070A0 E8 2BFFFFFF CALL EGU.00406FD0 ; JMP to kernel32.GetModuleHandleA Жму Enter на нее: 00406FD0 -FF25 18435600 JMP DWORD PTR DS:[564318] ; kernel32.GetModuleHandleA В окне дампа смотрю на адрес 564318 и пытаюсь найти примерное начало импорта 00564318 FC 3D 57 7C 00 00 00 00 24 30 2D 7C 1A 90 2D 7C ь=W|....$0-| ђ-| Поднимаюсь чуть выше, вижу нули. 00564208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Нули заканчиваются по адресу 0055E698 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Т.е с адреса 0055E688 опять начинается код. 0055E688 EC 9F 41 00 0C 32 47 00 00 00 00 00 00 00 00 00 мџA..2G......... Ладно, иду в ImpRec: OEP=00153258 (без ImageBase) RVA=<начало где нули>=00564208 - 400000=00164208 SIZE=<начало кода, после того как нули закончились>=0055E688 Галочка "Add new section" стоит Нажимаю Get Imports и ничего не импортируется, значит я накосячил где-то… Вот только где… Хм…попробовал еще кое-что. Перечитал топик еще раз.. Ввел параметры, какие говорил DillerInc OEP=00153258 RVA=0016421C SIZE= 00000A88. RVA(от галочки Add new section) =001F7000 Get Import и Fix Dump. Зафиксировал те два дампа, что снял из Олли.. Оба работают. Так, интересно. Теперь правлю мои параметры. Решил заменить размер. Был SIZE=0055E688 Заменил на размер DillerInc'а 00000A88. Все получилось!!!! Еще попробовал. Теперь ставлю размер 00010000 Появилось кое-что лишнее ? Fthunk: 00169000 Nbfunc:4 (decimal:4) valid:NO rva: 00169000 ptr 00568000 rva: 00169004 ptr 00568010 rva: 00169008 ptr 0055F710 rva: 0016900C ptr 00569010 Удаляю ее, фиксирую оба дампа. Все работает. Файл в среднем занимает 3,63 МБ (±0,01) Значит все дело в IAT Size (хотя у меня RVA=00164208, у DillerInc RVA=0016421C, у меня к тому же Windows 2000 ) DillerInc, расскажи почему IAT Size = 0A88h ?? Щас пойду почитаю про PE-формат и "Директории импорта". Расскажешь тогда еще как урезать файл?? А то он весит 3,63 МБ. Как там вырезать секции и т.п. Ты вроде говорит что-то про .idata. |
|
Создано: 31 июля 2007 02:39 · Личное сообщение · #8 DillerInc Решил попробовать, как ты посоветовал (интересно, получится ли?). Дошел до ОЕР. Ставлю бряк. bp GetModuleHandleA Остановка на 7C573DFC > 55 PUSH EBP Смотрю откуда эта функция была вызвана и куда вернется после завершения работы 0012F87C 00553272 RETURN to EGU.00553272 from EGU.00407094 From: 00407093 90 NOP 00407094 53 PUSH EBX Как видно, это тот самый «CALL ведущий в не куда» To: 0055326D E8 223EEBFF CALL EGU.00407094 00553272 33C0 XOR EAX,EAX Что с этим делать?? Возможно, какую-то информацию уже можно вбивать в ImpRec? Еще заметил: дамп, снятый в WinXp, в Win2000 не запутился: Ошибка с заголовком: "Entry Point Not Found" сообщает, что: "The procedure entry point RestoreLastError could not be located in the dynamic link library kernel32.dll" Посмотрел параметры функции GetModuleHandleA. HMODULE GetModuleHandleA { LPCSTR module } Возвращает Success: A handle to the loaded dll. Failure: A NULL handle. Use GetLastError to determine the cause. |
|
Создано: 31 июля 2007 11:36 · Личное сообщение · #9 Mavlyudov пишет: расскажи почему IAT Size = 0A88h ?? ...ну,это же элементарно,Ватсон 00564CA4h - 0056421Ch = 0A88h От тебя же просят размер,а не смещение,где таблица заканчивается. Начало IAT -- это смещение,где начинаются первые адреса IAT, а не какие-то нули. Конец IAT -- это смещение,по которому находится последний импортируемый адрес, + 8 байт. И здесь нет "CALL ведущий в не куда", потому что это UPX. Securom тут по-видимому используется для привязки к оригинальному диску. ----- the Power of Reversing team |
|
Создано: 31 июля 2007 11:56 · Личное сообщение · #10 DillerInc пишет: Начало IAT -- это смещение,где начинаются первые адреса IAT, а не какие-то нули. Конец IAT -- это смещение,по которому находится последний импортируемый адрес, + 8 байт. Как понять где начинается IAT, а где заканчивается? Это столбики цифр 77 или 7С ? У меня по адресу 00564318 таких нет. Где ты взял арес 00564CA4 ? |
|
Создано: 31 июля 2007 14:46 · Личное сообщение · #11 |
|
Создано: 31 июля 2007 19:10 · Личное сообщение · #12 Может быть, мне тут помогут =) В общем начал изучать сей прот. Для опытов взял старую версию на WarCraft'e - 4.84 Восстанавливать импорт методом Cigan'a не стал, а просто пофиксил все переходы скриптом. Но вот проблемка. Все переходы верные, но импорт imprec'ом восстанавливается не полностью. Для сравнения брал nocd с gamecopyworld.com. Если точнее, то не восставливается импорт системных библиотек - т.е. kernel, user32, ntdll и т.д. Хотя в дампе все они есть: nop call .. заменено на: 004011D0 |. FF15 ECB34400 CALL DWORD PTR DS:[44B3EC] ; \MessageBoxA Возможно, я что-то конкретно не понимаю в импорте, но все же прошу помочь |
|
Создано: 31 июля 2007 19:53 · Личное сообщение · #13 |
|
Создано: 05 августа 2007 01:07 · Поправил: Smon · Личное сообщение · #14 Кто нить реально смотрел 7-ку ? Начал ковырять Hitman Blood Money, распакованная гама падает на одном из инт3 (неужели в секуроме есть наномиты?! ), которых в секции кода примерно несколько тысяч, блоками от 1-го до 4 интов подряд, лежат в основном сразу за jcc (может это всё же такая проверка на распакованность\антидамп?) Примеры: 00401030 6A FF PUSH -1 00401032 68 54897200 PUSH 555_.00728954 00401037 64:A1 00000000 MOV EAX,DWORD PTR FS:[0] 0040103D 50 PUSH EAX 0040103E 64:8925 00000000 MOV DWORD PTR FS:[0],ESP 00401045 51 PUSH ECX 00401046 A1 3CF88100 MOV EAX,DWORD PTR DS:[81F83C] 0040104B 85C0 TEST EAX,EAX 0040104D 74 01 JE SHORT 555_.00401050 0040104F CC INT3 00401050 6A 21 PUSH 21 00401052 68 C4147500 PUSH 555_.007514C4 ; ASCII "hitman3\hitman3\hitman3.cpp" 00401057 68 886A0000 PUSH 6A88 0040105C E8 FF560400 CALL 555_.00446760 00402E1C 57 PUSH EDI 00402E1D 897424 0C MOV DWORD PTR SS:[ESP+C],ESI 00402E21 C706 4C167500 MOV DWORD PTR DS:[ESI],555_.0075164C 00402E27 8B46 14 MOV EAX,DWORD PTR DS:[ESI+14] 00402E2A 33DB XOR EBX,EBX 00402E2C 3BC3 CMP EAX,EBX 00402E2E 895C24 1C MOV DWORD PTR SS:[ESP+1C],EBX 00402E32 74 01 JE SHORT 555_.00402E35 00402E34 CC INT3 00402E35 891D 84F68100 MOV DWORD PTR DS:[81F684],EBX 00402E3B 8B7E 04 MOV EDI,DWORD PTR DS:[ESI+4] 00402E3E 3BFB CMP EDI,EBX 00402E40 895E 18 MOV DWORD PTR DS:[ESI+18],EBX 00402E43 895E 14 MOV DWORD PTR DS:[ESI+14],EBX 00405310 8B81 041B0000 MOV EAX,DWORD PTR DS:[ECX+1B04] 00405316 85C0 TEST EAX,EAX 00405318 74 04 JE SHORT 555_.0040531E 0040531A CC INT3 0040531B 32C0 XOR AL,AL 0040531D C3 RETN 0040531E C781 041B0000 02000000 MOV DWORD PTR DS:[ECX+1B04],2 00405328 B0 01 MOV AL,1 0040532A C3 RETN 00452BE7 FF15 A8107500 CALL DWORD PTR DS:[<&kernel32.GetCurrent>; kernel32.GetCurrentProcess 00452BED 50 PUSH EAX 00452BEE FF15 A4107500 CALL DWORD PTR DS:[<&kernel32.GetProcess>; kernel32.GetProcessAffinityMask 00452BF4 85C0 TEST EAX,EAX 00452BF6 0F84 B5000000 JE 555_.00452CB1 00452BFC 8B0C24 MOV ECX,DWORD PTR SS:[ESP] 00452BFF 85C9 TEST ECX,ECX 00452C01 75 04 JNZ SHORT 555_.00452C07 00452C03 CC INT3 00452C04 8B0C24 MOV ECX,DWORD PTR SS:[ESP] 00452C07 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4] 00452C0B 85C0 TEST EAX,EAX 00452C0D 75 04 JNZ SHORT 555_.00452C13 00452C0F CC INT3 00452C10 8B0C24 MOV ECX,DWORD PTR SS:[ESP] 00452C13 83F9 01 CMP ECX,1 00452C16 0F84 95000000 JE 555_.00452CB1 Особенно забавно выглядят третий и четвертый пример, складывается такое впечатление, что прот просто сам обрабатывает инты, не позволяя проге упасть PS: ни вм, ни прыжков в секцию прота не нашёл, прога падает на интах, попытка занопить их по шаблонам не удалась, всё равно падает, только уже непонятно где (OpenGL движок игры не дает ольке нормально работать ) ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 06 августа 2007 22:00 · Личное сообщение · #15 Smon Странно,не встречал подобного.Хотя я в принципе не особо разбирал седьмую версию. А можно посмотреть,что происходит в защищённой программе при выполнении команды INT3, т.е. как её обрабатывает протектор??Может в защищённой программе они(команды прерывания) вообще не получают управления?? Может Cigan сможет больше сказать...он ведь у нас любит Securom ----- the Power of Reversing team |
|
Создано: 06 августа 2007 22:07 · Личное сообщение · #16 DillerInc пишет: А можно посмотреть,что происходит в защищённой программе при выполнении команды INT3, т.е. как её обрабатывает протектор Я уже думал над этим, но сайс не юзаю, а олька тут не помощник, т.к. гама падает уже после запуска и входа в граф. режим, а олька с ним к сожалению не дружит ( ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 08 августа 2007 15:23 · Личное сообщение · #17 DillerInc Еще пришла такая мысль: а зачем распаковывать UPX, ведь если импорт не кривой, то все работать будет!!! Дошел до адреса 005ED180 60 PUSHAD Снял дамп: с галочкой Rebuild Import и без. Работает файл с отключенной галочкой. тоже самое сделал на строчке ОЕР 00553258 55 PUSH EBP Опять же: дамп, который снять с отключенной галочкой Rebuild Import работает. (другой дамп выдает ошибку: The procedure entry point could not be located in the dynamic link library WS2_32.DLL) Мне кажется, что такие дампы все же не будут работать на других компах, так что подправить импорт одним из указанных выше способой в ImpRec, ст0ит... Да, кстати, проверил еше раз скрипты: один из них доходит до 005ED180, т.е лошел бы ло ОЕР, если бы не было UPX. Другой скрипт ставить бряки на все CALL'ы. Пока что я не понял для чего. DillerInc Расскажи пожалуйста еще две такие вещи: 1) как дойти до ОЕР, если ставить бряк на WriteProcessMemory, а не на CreateEventA.... 2) как сократить размер файла с 3,62МБ до 1,98МБ |
|
Создано: 01 сентября 2007 14:07 · Личное сообщение · #18 Вопрос. Начал разбирать седьмую версию сабжа, встал на первом же шаге - ОЕР и антиотладка. Последний тутор от ARTeam немного освещает антиотладку, но этого оказалось недостаточно. Я не смог даже найти использование описанного там трика. Даже ничего похожего. Как я понимаю, с помощью плагинов, удается обойти ZwQueryInformationProcess, ZwQuerySystemInformation, CheckRemoteDebuggerPresent, IsDebuggerPresent, NtGlobalFlag\HeapFlag и несколько проверок класса\имени окна. На форуме ARTeam haggar отмечал след. зависимость кодов ошибки со срабатыванием антиотладки: 1. ERROR_NUMBER = 10000 ZwQueryInformationProcess InfoClass = 0 2. ERROR_NUMBER = 2000 ZwQueryInformationProcess InfoClass = 7 3. ERROR_NUMBER = 5002 FindWindowA FindWindowExA FindWindowW FindWindowExW 4. ERROR_NUMBER = 5001 CreateFileA - drivers 5. ERROR_NUMBER = 5017 ZwQuerySystemInformation 6. ERROR_NUMBER = 8002 CheckRemoteDebuggerPresent 7. ERROR_NUMBER = 8008 HeapFlag 8. ERROR_NUMBER = 8009 NtGlobalFlag 9. ERROR_NUMBER = 8010 IsDebuggerPresent ???? maybe some more checks 10 ERROR_NUMBER = 8007 ZwQueryObject ???? ... почти уверен, что 8010 вызывается не только из-за IsDebuggerPresent Вот собственно и все, что смог узнать. Версия 7.29.0008 (Protection_ID 5.2с) с отладчиком выплевывает ошибку 8010. Уверен, кто-то справлялся с этим делом, может подскажите куда рыть? =) |
|
Создано: 01 сентября 2007 19:47 · Личное сообщение · #19 SniperOK пишет: Уверен, кто-то справлялся с этим делом, может подскажите куда рыть? ...на самом деле всё можно сделать гораздо проще,не заморачиваясь со всевозможными антиотладочными трюками.Надо только немного попрограммировать. Главной наводкой здесь является то,что почти любая программа вызывает одной из первых функцию GetModuleHandleA.Подумайте,как это можно использовать,а потом напишите что-то вроде loader'а. ----- the Power of Reversing team |
|
Создано: 27 сентября 2007 18:40 · Личное сообщение · #20 Mavlyudov пишет: The linear sector density of Securom discs is very different to the density of normal cdr(w)s. This can be measured by timing reads on the cd. The following image shows the density of a Securom disc (red) compared to a normal disc (green). Кто смотрел, в 7-ой версии все тоже самое? Новых фишек проверки диска нет? |
<< . 1 . 2 . 3 . |
eXeL@B —› Протекторы —› unpack securom |