?
壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳。
?
手脱UPX壳:
工具:ExeinfoPE、OD
对象:rmvbfix
将要脱的exe扔进od。
?
这里选择"否",不然有些操作会出现错误。
?
?
进入之后从起点开始单步执行(快捷键F8),遇到pxx注意跳跃方向,手动断点跳过往回跳的指令。
?
?
遇到这种jxx后跟call指令的一并跳过。
?
?
一直单步知道如上图这样的,跳跃跨度极大,让其跳跃后便可以到达真正的入口:
?
?
在入口我们右键便可以用od内工具进行脱壳。
?
这里选择方式1/2都可以。
?
一进入要先确保硬件断点是清空状态的。
?
我们进行push入栈之后,在右侧寄存器里可以看到ESP有了操作,右键让其进入数据窗口。
?
?
也可以在下方指令框中输入 dd/hr ESP地址
?
?
设置硬件访问,word和Dword都可。
?
?
然后运行一下:
?
?
随后就和方法1一样继续往下走。
?
?
可以通过菜单栏"查看—内存"或直接按m进入内存界面:
?
对区段".rsrc"下断点,下面的区段不用管,之下第一个rsrc,后面的是系统的区段。
下完之后运行走一步,然后回来:
?
?
回来之后在401000处再下一次
随后单步往下走,同方法1
?
众所周知,push的反义词是pop,有入栈的push,必定有出栈的pop
?
?
我们查找popad,因为是pushad所以后面的ad相同,注意不用勾选整个块,因为整个块的popad绝对不止一个。
?
?
好,找到了,单步运行,同方法1
?
?
?
?
?
?
?
?
原文:https://www.cnblogs.com/DorinXL/p/12254264.html