手动脱NsPacK壳实战
实战 手动
2023-09-11 14:14:05 时间
作者:Fly2015
这里脱壳的程序是吾爱破解培训的作业2,相较于作业1稍微要强一点,但是只要掌握了脱壳的ESP定律,脱这个Nspack壳并不难,不过还是蛮有意思的。
1.使用查壳软件对加壳的程序进行查壳。
使用PE Detective查壳的结果:
使用DIE查壳的结果:
2.OD载入程序进行脱壳操作
OD载入以后,被加壳程序的入口点的汇编代码,如图。很显然,加壳程序载入OD以后,发现有3个pushad指令,因此在进行程序脱壳的时候,根据ESP定律需要下3个硬件断点。
根据该加壳程序载入OD的汇编的特点,根据ESP定律下3个硬件断点,如图。
3次F9运行加壳程序,程序自然会断在第3个硬件断点处,如图。
F7跟进到地址0044C18D处,观察后面的汇编指令的特点,经过分析以及结合反汇编的经验,找到了下面这段汇编,如图。
很显然,JMP指令后面的地址0041DDAC就是原来程序的真实OEP的地址。先删除前面设置的3个硬件断点,然后在地址0044C33C处F2下断点,F4或者F9运行到该断点处断下。
删除原来设置的硬件断点:
运行到断点0044C33C处,程序断下来,如图。
F7跟进到真实OEP的地址0041DDAC处,如图。
令人烦恼的事情发生了,OD没有正确的将内存数据转换成汇编形式显示出来,因此需要我们手动的将内存数据转换成汇编指令显示出来(选中没有没有正确显示的内存数据-->右键-->分析-->分析代码或者使用快捷键Ctrl + A)。
Ok,上面的汇编代码是不是很熟悉啊。现在,我们就可以使用OD的插件OllyDump或者Load PE结合RECImport 工具,进行程序的脱壳了。运行脱壳后的程序,程序运行正常。
相关文章
- 手动脱WinUpack 壳实战
- 手动脱UPX 壳实战
- 病毒木马查杀实战第002篇:熊猫烧香之手动查杀
- 手动脱Mole Box壳实战总结
- 高质量 Spring 实战学习笔记,腾讯内部学习 Spring 首推
- 【Selenium项目实战】解决(简单的)验证码问题一:使用pytesseract模块和PIL模块解决
- 【接口测试 】Day2-Postman实现接口测试(附项目实战)
- 《Windows PowerShell实战指南(第2版)》——1.7 赶紧使用PowerShell吧
- 《树莓派Python编程入门与实战(第2版)》——1.7 排除树莓派的故障
- 《数据科学:R语言实战》一1.2 异常检测
- 《树莓派开发实战(第2版)》——2.7 小结
- 《机器人编程实战》一一3.3 目标和机器人状态图
- 【ESP8266之LUA开发】十一、实战DHT11获取温湿度绘制曲线到APP
- 【云原生-Kubernetes篇】Kubernetes入门扫盲实战