UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
Ctrl+F 输入popad,F4到此.F8向下走,遇到回跳,F4过。大跳转之后就是OEP,脱。
32Lite 0.03a -> Oleg Prokhorov
ESP定律
Aspack
ESP定律
Ctrl+F 输入popad,回车,接着找,直到看到下面这个特征,一个popad+两个return就好,F8到push ebp,脱壳
POPAD
JNZ SHORT 0.005633BA
MOV EAX,1
RETN 0C
PUSH 0
RETN
PECompact 1.40 - 1.45 -> Jeremy Collake
PECompact 2.x -> Jeremy Collake [Overlay]
单步跟踪(F7与F8结合),跟踪到大的跳转之后,出现PUSH EBP,即到OEP
(要点,大跳转要跟随)
MEW 11 SE 1.2 -> NorthFox/HCC
ESP定律
nSPack 2.1 - 2.5 -> North Star/Liu Xing Ping
ESP定律
EZIP 1.0 -> Jonathan Clark [Overlay]
ESP定律
JDPack 1.x / JDProtect 0.9 -> TLZJ18 Software
ESP定律
PE Pack 1.0 -> ANAKiN
ESP定律
WWPack32 1.x -> Piotr Warezak
ESP定律
PEDiminisher 0.1 -> Teraphy
ESP定律 此壳脱完后依然查不出何种语言编写,但通过查前后文件大小与查看区段,可知脱壳成功
DxPack V0.86 -> Dxd *
ESP定律
FSG1.33
方法1:OD载入,CTRL+B搜索5655,上面紧接的转跳地址就是OEP了
CTRL+G直接到OEP,F4,然后DUMP并修复
最后就是优化一下大小
方法2:单步向下走,直到出现注释窗口出kernel32.GetProcAddress,下断bp GetProcAddress F9,F2取消断点,Ctrl+F9返回,F8,再F8回到主程序领空。往下单步走,看到一个跳转未实现的行,Ctrl+G 输入后面地址,Ctrl+A。分析完,脱壳。
FSG 2.0 -> bart/xt
F8或F7单步一到几步,直到出现类似下列类似情况:
0041A27C 004001E8 FSG.004001E8
0041A280 004001DC FSG.004001DC
0041A284 004001DE FSG.004001DE
0041A288 004010CC FSG.004010CC
0041A28C > 7C801D77 kernel32.LoadLibraryA
0041A290 > 7C80AC28 kernel32.GetProcAddress
Ctrl+G 输入 kernel32.LoadLibraryA上面的地址。硬件断点-F9.脱壳。
ASProtect 2.1x SKE -> Alexey Solodovnikov
Alt+O=>异常=>关闭所有“忽略所有异常选项”
Shift+F9直到程序运行,记住按下次数。Ctrl+F2,Shift+F9,次数为"运行次数-1",Alt+M,找到CODE段,Shift+F9.F8到大跳转后,脱壳。一般情况下都要修复。
PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode [Overlay]
Alt+O=>异常=>关闭所有“忽略所有异常选项”
Shift+F9直到程序运行,记住按下次数。Ctrl+F2,Shift+F9,次数为"运行次数-1".Ctrl+G 输入"0040CCD7 SE处理程序"中的0040CCD7,F2,Shift+F9.F2取消断点,F8一直跟到大跳转之后。
0013FFC0 0040CCD7 SE处理程序
yoda's cryptor 1.2
yoda's Protector 1.3 -> Ashkbiz Danehkar
内存映射法,第一次断点下在“资源段”,第二次断点下在“代码段”。有可能需要F8几下,大跳转后出现PUSH ebp即可脱壳。
tElock 0.98b1 -> tE!
此壳SEH比较多,shift+F9极限数-1次,看堆栈窗口,ctrl+G输入最后一次SEH下的地址。F2下断,shift+F9.F8单步向下走,遇近Call F7过。大跳转之后就是OEP。不过需要修复IAT,比较麻烦
PolyEnE 0.01+ by Lennart Hedlund
内存映射法,F2到数据段
Virogen Crypt 0.75
ESP定律,需要修复