PECompact的OEP的简易查找方法

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2008-8-17 | 浏览: 人次 ]

来源:安全中国

============================================== 

该方法试用于PECompactV1.71,V1.76,V1.82 

具体看下面的示例 

 

============================================== 

这是98的Calc.exe使用PECompact1.82压缩过的结果 

 

010153A0 >EB 06            JMP SHORT CALC.010153A8<==第一条指令 

010153A2  68 E0190100      PUSH 119E0<======这就是程序的原始OEP的RVA地址 

010153A7  C3                RETN 

010153A8  9C                PUSHFD 

010153A9  60                PUSHAD 

010153AA  E8 02000000      CALL CALC.010153B1 

============================================== 

 

============================================== 

这是98的Notepad.exe使用PECompact1.82压缩过的结果 

0040AB20 >EB 06            JMP SHORT NOTEPAD.0040AB28<==第一条指令 

0040AB22  68 CC100000      PUSH 10CC<======这就是程序的原始OEP的RVA地址 

0040AB27  C3                RETN 

0040AB28  9C                PUSHFD 

0040AB29  60                PUSHAD 

0040AB2A  E8 02000000      CALL NOTEPAD.0040AB31 

============================================== 

 

============================================== 

这是使用PECompact1.82压缩过LordPE.exe [rts]的结果 

004239A0 >EB 06            JMP SHORT X.004239A8<==第一条指令 

004239A2  68 103E0000      PUSH 3E10<======这就是程序的原始OEP的RVA地址 

004239A7  C3                RETN 

004239A8  9C                PUSHFD 

004239A9  60                PUSHAD 

004239AA  E8 02000000      CALL X.004239B1 

004239AF  33C0              XOR EAX,EAX 

============================================== 

 

============================================== 

这是PECompact1.82自身的结果 

 

0043E760 >EB 06            JMP SHORT PECOMPAC.0043E768<==第一条指令 

0043E762  68 00E00300      PUSH 3E000<======这就是程序的原始OEP的RVA地址 

0043E767  C3                RETN 

0043E768  9C                PUSHFD 

0043E769  60                PUSHAD 

0043E76A  E8 02000000      CALL PECOMPAC.0043E771 

0043E76F  33C0              XOR EAX,EAX 

============================================== 

 

============================================== 

这是ODBG1.06的结果 

 

004F8200 >EB 06            JMP SHORT X.004F8208<==第一条指令 

004F8202  68 00100000      PUSH 1000<======这就是程序的原始OEP的RVA地址 

004F8207  C3                RETN 

004F8208  9C                PUSHFD 

004F8209  60                PUSHAD 

004F820A  E8 02000000      CALL X.004F8211 

004F820F  33C0              XOR EAX,EAX 

004F8211  8BC4              MOV EAX,ESP 

============================================== 

 

很明显,原始程序入口为 

VA=ImageBase+RVA 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

下面是使用TRW2000手动脱PECompact的壳 

 

 

(标准TRW2000 V1.22,我想修改版也应该可以吧) 

 

Load PECompact V1.82 

<F8> 

看上面的指令,0043E762  68 00E00300      PUSH 3E000 

由于ImageBas=400000,所以OEP=43E000 

所以 

bp if(EIP==43E000) 



pedump c:\xx.exe 



 

好了,看看C:\xx.exe是不是正常了 

广告位