В прошлой статье я рассказал, как распаковывать telock 0.99 используя
PEID, а точнее его OEP модуль. Здесь я расскажу, как самому найти
OEP, без каких-либо купаний в коде протектора.
Приступим. Для примера возьмем тот же файл, что и в предыдущей статье,
а именно: TMG CloneDVD 1.1.6.1 Keygen. Вы также можете взять какой либо другой, интересный вам файл, защищенный telock
версии 0.98\0.99 (это опробованные мной версии, при которых описанный здесь способ
прекрасно работает), при этом отличаться будут лишь адреса.
Откроем SoftIce и поставим точку останова на прерывание int 3,
введем "bpint 3", выйдем из SoftIce. Теперь запустим нашу подопытную программу
и сразу же оказываемся в отладчике:
017F:0042707A E800000000 CALL 0042707F
017F:0042707F 5D POP EBP
017F:00427080 8D4546 LEA EAX,[EBP+46]
017F:00427083 50 PUSH EAX
017F:00427084 33C0 XOR EAX,EAX
017F:00427086 64FF30 PUSH DWORD PTR FS:[EAX]
017F:00427089 648920 MOV FS:[EAX],ESP
017F:0042708C CC INT 3 ; мы окажемся здесь
017F:0042708D 90 NOP
017F:0042708E 8BC0 MOV EAX,EAX
017F:00427090 F9 STC
017F:00427091 90 NOP
017F:00427092 8D045D34120000 LEA EAX,[EBX*2+00001234] ; сюда поставим bpx
017F:00427099 F8 CLC
017F:0042709A 90 NOP
017F:0042709B C1EB05 SHR EBX,05
017F:0042709E FC CLD
017F:0042709F 90 NOP
017F:004270A0 C1C007 ROL EAX,07
017F:004270A3 90 NOP
017F:004270A4 90 NOP
017F:004270A5 33DB XOR EBX,EBX
017F:004270A7 F7F3 DIV EBX
017F:004270A9 64678F060000 POP DWORD PTR FS:[0000]
017F:004270AF 83C404 ADD ESP,04 ;
017F:004270B2 66BE4746 MOV SI,4647 ; официальный back-door softice
017F:004270B6 66BF4D4A MOV DI,4A4D ;
017F:004270BA 8A8599000000 MOV AL,[EBP+00000099]
017F:004270C0 E99C000000 JMP 00427161
017F:004270C5 8B442404 MOV EAX,[ESP+04]
017F:004270C9 8B4C240C MOV ECX,[ESP+0C]
017F:004270CD FF81B8000000 INC DWORD PTR [ECX+000000B8]
017F:004270D3 8B00 MOV EAX,[EAX]
Мы будем находиться по адресу 0042708C, теперь отключим все bp, введем "bc
*" и поставим bpx после инструкции STC, введем "bpx 00427092". Отпустим SoftIce
и вновь в нем окажемся, сработал bpx 00427092, т.о. мы прошли незамеченными.
Теперь введем "bpm esp+24" и снова отпустим SoftIce, когда отладчик всплывет
мы окажемся здесь:
017F:004287AC EB02 JMP 004287B0
017F:004287AE CD20 INT 20 VXDJmp 2464,7F61
017F:004287B1 FF6424D0 JMP [ESP-30] ; мы здесь, [esp-30]=OEP
017F:004287B5 CA0000 RETF 0000
Этот прыжок ведет к OEP, отключаем bpx, введем "bc *" и жмем F8.
Все, теперь мы точно по адресу OEP. Делаем дамп и восстанавливаем импорт в
соответствии с предыдущей статьей.