0x01 假期学习了”ximo脱壳基础“,学习过程中有一些记录发出来可以供大家参考。记录中步骤都是以“ximo脱壳基础”中的例子为参考,部分壳进行时需要根据具体情况进行改变,这里的总结步骤不是绝对的过程。 有些方法是通用的,所以会重复出现。 0x02 1)UPX壳(压缩壳) 方法一:单步跟踪 使程序只执行向下跳转,不让向上跳,直到运行到popad处(和开始的pushad对应),后面的jmp大跳跳转到oep
方法二:ESP定律法 pushad后根据寄存器ESP的值在数据窗口跟随(命令:dd [ESP] ) 断点—>硬件访问—>Word(命令:hr [ESP] )—>运行—>删除硬件断点—>F8到OEP
方法三:2次内存镜像法 ALT+M(到程序段)—>在第一个.rsrc设置访问中断(F2)—>Shift+F9—>ALT+M(到程序段)—>在00401000设置访问中断(F2)—>Shift+F9—>向下运行几步便可以看到popad
方法四:一步直达法 根据pushad和popad成对出现性质 Ctrl+F查找命令(不勾选整个段)
2)ASPACK壳(压缩壳) ASPack 2.12 -> Alexey Solodoynikoy
方法一:单步跟踪 使程序只执行向下跳转,不让向上跳,直到运行到popad处(和开始的pushad对应),后面的jmp大跳跳转到oep 方法二:ESP定律法 pushad后根据寄存器ESP的值在数据窗口跟随(命令:dd [ESP] ) 右键断点—>硬件访问—>Word(命令:hr [ESP] )—>运行—>删除硬件断点—>F8到OEP
方法三:2次内存镜像法 ALT+M(到程序段)—>在第一个.rsrc设置访问中断(F2)—>Shift+F9—>ALT+M(到程序段)—>在00401000设置访问中断(F2)—>Shift+F9—>向下运行几步便可以看到popad
方法四:一步直达法 根据pushad和popad成对出现性质 Ctrl+F查找命令(不勾选整个段,CTRL+L查找下一个) 方法五:模拟跟踪法 ALT+M(到程序段)查找包含SFX,imports,relocations的区段—>输入命令“tc eip<[地址]”—>到达OEP或者需要向下运行几步 方法六:SFX 选项—>调试设置—>SFX—>选择跟踪方式(块方式或者字节方式)—>重载
3)NsPack壳 版本:nSPack 1.3 -> North Star/Liu Xing Ping 开始pushfd 方法一:ESP定律法 单步运行,发现ESP值变换 断点—>硬件访问—>Word(命令:hr [ESP] )—>运行(到达popfd)—>删除硬件断点—>F8到OEP |