脱壳基础知识入门之寻找OEP

豆豆网   技术应用频道   2007年01月15日  【字号: 收藏本文

本文详细介绍脱壳基础知识入门之寻找OEP

  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里往下翻屏,就会发现这个跨段转移指令:

  

  上图相关代码如下:

责编:豆豆技术应用

正在加载评论...