本文主要是介绍逆向脱壳实训 #1 手脱UPX,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
逆向脱壳实训 #1
文章目录
- 逆向脱壳实训 #1
- 环境 & 工具
- 单步跟踪法
闲来无事,学学ximo大佬的脱壳教程
本博客主要内容:复现吾爱破解论坛这个帖子的ximo大佬教程,所有相关环境与工具均可在吾爱破解论坛中查找到
环境 & 工具
- win xp系统(尝试使用win10系统复现失败,浪费在调试环境上的时间比实际学习的时间还长,只能说不愧是windows)
- 吾爱破解版ollydbg
- exeinfope(可使用其他类似查壳工具)
- ImportREC
- LordPE
单步跟踪法
主要思想:单步调试程序,当遇到向高地址的跳转时正常逐指令执行,当遇到向低地址的跳转时,在ollydbg中选中该指令的下一条指令并运行至该处。直到遇到popad指令后跟随的长距离跳转,随后f8跟随长距离跳转,到达的位置即为OEP(Original Entry Point)即未加壳的程序入口
示例:
此时0x0057910E处将进行向低地址跳转,于是选中0x00579110处指令,单击f4(或右键->断点->运行至此处)
当向上跳转指令的下一条仍是跳转时,选中下一条跳转指令的下一条指令(如图选中0x579131单击f4)
当向上跳转指令的下一条指令为调用指令时,执行到调用指令下一条指令(如图选中0x5791EE单击f4)
注意此时的popad指令以及长距离跳转:从0x5791EE跳转至0x47738C,跟随跳转
0x7738C即OEP,此时右键用ollyDump脱壳调试进程即可
脱壳前后对比
在确认OEP的位置后,、也可以使用LordPE完整转存,然后再使用ImportREC修正
至此,脱壳完毕
这篇关于逆向脱壳实训 #1 手脱UPX的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!