脱壳基础知识入门之寻找OEP
2007-01-15 16:44:11 来源:WEB开发网核心提示: UPX的壳可以用UPX.exe自身来脱,命令是:upx-d文件名,脱壳基础知识入门之寻找OEP(2),一些变种的UPX壳用UPX.EXE自身脱不了,这时可以试试UPXShellEx这款工具,大家不必要跟踪去找这个跨段的转移指令,中断WinMain后,本节实例下载:notepad.upx.r
UPX的壳可以用UPX.exe自身来脱,命令是:upx-d文件名。一些变种的UPX壳用UPX.EXE自身脱不了,这时可以试试UPXShellEx这款工具。
本节实例下载:notepad.upx.rar
脱壳前建议用PE工具LordPE打开目标文件查看一下区块,以尽可能地多了解一些信息,对脱壳有帮助,如下图:
1.根据跨段指令寻找OEP
推荐用Ollydbg来调试脱壳,比SoftICE和TRW2000方便多了。运行Ollydbg,点击菜单“选项/调试设置”,将第一次暂停设在WinMain函数上。再用Ollydbg打开实例notepad.upx.exe就可中断在外壳的入口点处了:
上图相关代码如下:
0040E8C0> 60 pushad //一开始Ollydbg就会中断这行,这个就是外壳的入口点,注意这个pushad指令
绝大多数加壳程序在被加密的程序中加上一个或多个段,所以依据跨段的转移指令(JMP)就可找到真正的入口点,此时就会有POPAD/POPFD指令出现。UPX用了一次跨段的转移指令(JMP),在跳到OEP处会看到虚拟地址的值有一个突变,此时就能确定OEP了。
UPX壳比较简单,大家不必要跟踪去找这个跨段的转移指令,中断WinMain后,只需要在Ollydbg里往下翻屏,就会发现这个跨段转移指令:
上图相关代码如下:
更多精彩
赞助商链接