手脱UPX壳方法介绍

方法1:单步跟踪

F8单步跟踪,向上不能让他跳,有loopd循环也一样(跳转的下一行按F4:运行到选定位置,循环loopd在call下一句F4执行)

只允许向下跳,如单步跟踪CALL处程序运行,则需要重载程序,再CALL处F7跟进(近CALL F7,远CALL F8)

pushad 入栈 
popad:出栈 出栈就离OEP不远了
看基址如有大的跳转则为调到OEP,到达OEP后就壳脱壳
 
005791EE    61              popad
005791EF  - E9 98E1EFFF     jmp rmvbfix.0047738C
 
0047738C    55              push ebp
0047738D    8BEC            mov ebp,esp
0047738F    83C4 F0         add esp,-0x10
00477392    B8 2C714700     mov eax,rmvbfix.0047712C                 ; UNICODE "K"
找到OEP后下来就是脱壳,两种方法
1)OD插件OllyDump,
2)LordPE:选择进程->修正镜像大小并完整保存->运行ImportREC输入表重建程序,找进程,OEP改为找到的OPE基址,取后5位,然后自动查找IAT,获取输入表,修复转存文件
注:如遇到SRV病毒,需要脱壳后在导入OD分析,如下位SRV病毒OEP特点
00579080    60              pushad
00579081    BE 00104F00     mov esi,rmvbfix.004F1000
00579086    8DBE 0000F1FF   lea edi,dword ptr ds:[esi-0xF0000]
0057908C    57              push edi
0057908D    83CD FF         or ebp,-0x1
00579090    EB 10           jmp short rmvbfix.005790A2
方法2:ESP定律法
F8单步一下进入下一行,寄存器窗口ESP显示红色,ESP右键 数据窗口中跟随或命令 dd或hr ESP基址来到大跳转->在第一行数值 右键 断点-硬件访问断点 word->F9运行->删除硬件断点,单步直达OEP
dd XXXXX-->ESP地址
hr XXXXX-->ESP地址
 
方法3:2次内存镜像法
m:在区段的程序段.rsrc(第一个.rsrc)下断点,运行,然后在进入m在00401000在下断点运行,F8单步到popad->oep
注意:如在第一个程序区段无.rsrc,则直接在00401000(code)处下断点
 
方法4:一步直达法
不是什么壳都适用。绝大多数UPX和ASPACK
查找popad(取消勾选整个区块),单步到大跳转OEP,可多次查找popad
方法5.最后一次异常法
1.调试选项忽略所有异常

 

载入程序shift+F9运行知道程序运行跑飞,记下次数比如5次,则重新载入按5-1=4次,然后找到如下SE句柄,转到表达式,然后下断点并运行,取消断点然后单步跟踪

 


 

方法6.脱壳脚本

插件-》OdbgScript-运行脚本 打开脱壳脚本,直达OEP(不一定准确,不准时需继续单步)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值