脱壳步骤二-修复

常规操作

1、寻找OEP:OD载入,找到OEP,停在OEP处(一般在push ebp代码处)。

2、生成转存文件:打开LordPE,选中程序的进程,右键“修正镜像大小”,然后右键“完整转存”,输入文件名,保存。此步也可用OD自带的插件进行,在代码区右键“用OllyDump脱壳调试进程”,此外如果勾选了“重建输入表”,后面就不需要再用ImportREC修正输入表了,如果不勾选,则需要进入第3步的操作。输入文件名,保存。

3、修正输入表:打开ImportREC,附加到程序的进程,输入寻找到的OEP地址(即OEP处的push ebp这句代码的地址),注意,输入的是偏移地址,如OEP的地址为:00403831,输入时只须输入3831即可。输入地址后,点击“自动查找IAT”按钮,然后点击“获取输入表”,点击“显示无效函数”,如果存在无效函数,则可在无效函数上右键“剪切指针”去除无效函数。最后点击“修复转存文件”按钮,选择在第二步中生成的转存文件,确定,脱壳即可完成。

 

异常处理:

1、提示数据错误

运行脱壳后的程序时,提示数据错误。此错误一般是由附加数据引起的。查壳时,比如NsPack 1.4 -> Liuxingping [Overlay] *,其中的[Overlay]即说明该程序存在附加数据,而对脱壳后的程序进行查壳,就没有了[Overlay],所以需要把附加数据从源文件添加到脱壳后的文件中。此问题的处理方式为:

(1)打开LordPE,“PE编辑器”按钮,选择原始程序(未脱壳的),打开,进入编辑器界面,点击“区段”按钮,进入区段表界面,查看最后一个区段的ROffset和RSize两个值,这两个值相加的结果即为附加数据的起始地址。以下以相加结果为00028400为例。

(2)打开WinHex(注意,如果WinHex打开时有问题,一般是目录没设置好,设置方法为菜单“选项”->“综合选项”(有的叫“常规”),进入设置界面,此界面中的临时文件目录和镜像备份目录必须是存在的,如果不存在,打开时就会提示错误)。用WinHex打开未脱壳的原始程序,找到上一步中得到的地址,在该地址处“选块开始”,然后在最末尾处“选块结束”,将选中的块Ctrl+C复制。

(3)用WinHex打开脱壳后的文件,在文件的末尾处粘贴,保存文件,即可解决脱壳后的程序数据错误的问题。

2、手动查找IAT信息

在修正输入表时,输入OEP地址后,可以“自动查找IAT”,也可以手动查找,查找方法为:

(1)OD载入,到达OEP后,在代码区域随便找一句调用系统函数的代码(call 系统函数),在这句代码上右键“跟随(Enter)”,即可找到有大片jmp的地方,上滚到第一个,该条数据中的地址减去基址再往前走4-8个字节(一般可使用8个字节)即为IAT的开始地址(RVA),如第一个jmp为:

004C8988  - FF25 0C014E00   JMP DWORD PTR DS:[4E010C]                ; ADVAPI32.RegCloseKey

则IAT的开始地址为:4E010C - 400000 - 8= E0104。

下滚到这一片jmp的最后一条(中间有INT3之类的可以忽略),如:

004C93CA  - FF25 E80E4E00   JMP DWORD PTR DS:[4E0EE8]                ; OLEAUT32.VariantInit

则IAT的结束地址为:4E0EE8 - 400000 + 8= E0EF0。

则IAT的大小为:E0EE8 - E010C = DEC。

(2)OD载入,到达OEP后,F8单步走,遇到调用系统函数的地方,F7步入,也可到达大片jmp的地方。计算方法同(1)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hopper Disassembler是一款非常强大的逆向工程工具,它可以对iOS应用进行脱壳操作,以便更好地进行逆向分析。以下是Hopper Disassembler脱壳的操作步骤: 1. 打开Hopper Disassembler软件,点击“File”菜单,选择“Open”打开需要脱壳进制文件。 2. 选择需要脱壳的应用程序,右键点击选择“Copy to...”,将应用程序复制到桌面或其他位置。 3. 打开终端,输入以下命令,将当前目录切换到应用程序所在的目录: ``` cd /path/to/application ``` 其中,/path/to/application为应用程序所在的路径。 4. 输入以下命令,将应用程序修改为可执行文件: ``` chmod +x ./AppName.app/AppName ``` 其中,AppName为应用程序的名称。 5. 输入以下命令,启动应用程序,并记录应用程序的进程ID: ``` ./AppName.app/AppName & echo $! ``` 第一条命令启动应用程序,第条命令输出应用程序的进程ID。 6. 打开Hopper Disassembler软件,选择“Debug”菜单,选择“Attach to Process”,输入应用程序的进程ID,连接到应用程序。 7. 连接成功后,选择“Debug”菜单,选择“Dump Process Memory”,输入需要脱壳的内存地址和大小,保存脱壳文件。 8. 使用Hopper Disassembler打开脱壳文件,即可对应用程序进行逆向分析。 需要注意的是,在某些国家和地区,对于越狱和逆向工程活动可能存在法律风险,使用这些工具时需要谨慎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值