PECompact的OEP的簡易查詢方法,以及實踐,dumper本準備寫的,但水平不夠 (3千字)

看雪資料發表於2015-11-15

==============================================
該方法試用於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)
g
pedump c:\xx.exe
g

好了,看看C:\xx.exe是不是正常了
=================================================================
=
=              inside Pandora's Box - iPB
=              Open Cracking Group  - OCG
=
=
=                                      DiKeN/iPB
=================================================================

相關文章