第一步:bp Virtu alProtect 按 F9 运行直到栈出现: PAGE_READONLY 如图: 第二步:到代码段下内在访问断点如图: F9 断下后,删除内在断点:如图 然后单步F7 往下:直到看见一个 JNZ ,JMP 连在一起,运行到JNZ 后,在 JMP 处下一个F2 断点,F9 运行,断下后自效验完了,要删除这个断点 ,再去代码段下一个内在访问断点,F9 运行,就到OEP 了,册除内存断点 把 OEP 记下,要配置用的如图: 配置脚本: Mov first, 这里填 OEP 所以到OEP 了以后要记录它的地址 接下来 F7 单步往下找第二个要填写的地址,一直F7 过几 JMP 长跳后会到这里:如图: 0046617A - 0F84 495CFFFF JE delphi7
0045BDC9 这句很有特点,但我们要记录的是这句: 00466171 BD 92E94300 MOV EBP,delphi7
0043E992 记录完F7 几次继续往下就到这里: 这里我们要记录一句: 0045BDCE 8BAD 42850100 MOV EBP,DWORD PTR SS:[EBP+18542] 然后 F7 单步到第一句后看 信息窗口见: 在信息窗口对准:EDAE30E1 右键选在数据窗口中跟随,然后下第一个字节的 硬件写入断点如图: F7 到这一句: 0045BDDB 8DAD 6086D28E LEA EBP,DWORD PTR SS:[EBP+8ED28660] 并记录下来,这些都是填充的地址 接下来,重载,然后 ctr+G 去下这个函数:Virtu alProtect 断点,如图: F9 几次好象是8 次左右,这时看堆栈: 刚才这里有VirtualProtect 的调用过程,但现在没有了,说明到了解压的地方了, 再F9 一次,然后,鼠标往上翻一下看见下图:这里