【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg、PEiD、PETools
—————————————————————————————————
【脱壳过程】:
很少注意这个Morphine壳,Morphine只是对Section Table动了手脚,没有加密输入表等。
感觉更像是一个简单的“伪装”壳罢了。看到论坛里这几天有兄弟讨论这个,所以抽点时间看了看。
jingulong没时间写教程,我就来代写一下吧。
脱壳目标用csjwaman上传之Morphine加壳的“PE文件分析器.exe”。
—————————————————————————————————
一、恢复 Section Table
005F125B F8 clc
//进入Ollydbg后暂停在这
005F125C 85C9 test ecx,ecx
005F125E F5 cmc
005F125F 57 push edi
005F1260 74 05 je short PE.005F1267
下断:BP VirtualAlloc
中断后取消断点,Alt+F9返回
005F10FD FFD3 call ebx
005F10FF 59 pop ecx
//返回这里
005F1100 85C0 test eax,eax
005F1102 75 13 jnz short PE.005F1117
005F1104 6A 40 push 40
005F1106 68 00100000 push 1000
005F110B 51 push ecx
005F110C 50 push eax
005F110D FFD3 call ebx
005F110F 85C0 test eax,eax
005F1111 0F84 3A010000 je PE.005F1251
—————————————————————————
看看寄存器情况:
EAX 00400000
ECX 77E5986B kernel32.77E5986B
EDX 7FFE0304
EBX 77E5980A kernel32.VirtualAlloc
ESP 0012F7A0
EBP 0012FFB0
ESI 005F18FB ASCII "CODE"
EDI 0012FDB8 ASCII "PE"
EIP 005F10FF PE.005F10FF
转存005F18FB处看看,这里就是原来的段表信息:
005F18FB 43 4F 44 45 00 00 00 00 90 62 0B 00 00 10 00 00 CODE....恇
005F190B 00 64 0B 00 00 04 00 00 00 00 00 00 00 00 00 00 .d
005F191B 00 00 00 00 60 00 00 E0 44 41 54 41 00 00 00 00 ....`.. DATA....
005F192B 98 22 00 00 00 80 0B 00 00 24 00 00 00 68 0B 00 ?... |