WEB开发网
开发学院网络安全黑客技术 脱壳基础知识入门之寻找OEP 阅读

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

 2007-01-15 16:44:11 来源:WEB开发网   
核心提示:一般的压缩壳,如Aspack等都有专用的脱壳机,脱壳基础知识入门之寻找OEP,而加密壳(如ASProtect,Armadillo)一般很少有脱壳机,必须手工脱壳,方法是开个DOS窗口,用命令upxnotepad.exe,手工脱壳一般情况是分三步:一是查找程序的真正入口点(OEP);二是抓取内存映像文件;三是输入表重建,

一般的压缩壳,如Aspack等都有专用的脱壳机 。而加密壳(如ASProtect,Armadillo)一般很少有脱壳机,必须手工脱壳。手工脱壳一般情况是分三步:一是查找程序的真正入口点(OEP);二是抓取内存映像文件;三是输入表重建。(当然现在的加密壳复杂些,要考虑更多的东西)

OEP是OriginalEntryPoint缩写,即程序加壳前的真正的入口点。

外壳初始化的现场环境(各寄存器值)与原程序的现场环境是相同的。加壳程序初始化时保存各寄存器的值,外壳执行完毕,会恢复各寄存器内容。其代码形式一般如下:

  PUSHFD    ;将标志寄存器入栈保存
  
PUSHAD    ;pusheax,ecx,edx,ebx,esp,ebp,esi,edi
   ……     ;外壳代码部分
  
POPAD     ;popedi,esi,ebp,esp,ebx,edx,ecx,eax
  
POPFD     ;恢复标志寄存器
  
JMPOEP    ;
OEP:……     ;解压后的程序原代码

为了讲述方便,本节用UPX加壳的Win98记事本来演示。首先用PEid查看加壳前的记事本:

PEid显示Notepad.exe程序是用MicrosoftVisualC++6.0编译的,接下来用UPX来加壳,方法是开个DOS窗口,用命令upxnotepad.exe。如下图所示:

这时再用PEid查看加壳的文件,PEid会给出如下信息:UPX0.89.6-1.02/1.05-1.24->Markus&Laszlo

1 2 3  下一页

Tags:脱壳 基础知识 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接