PE文件中脱壳技术的研究

合集下载

PE文件中脱壳技术的研究

PE文件中脱壳技术的研究
kn . i g Ke ywor ds PE Pa k n Un c i Ca o l g h l Mulis el S l-he ki c ig pa kng m ufa e s e l t— h l e fc c ng
对资源进行压缩 , 便于传输 , 具有一 定的保 护作 用。常见的压缩
2 P E结构框 架
( colfC m ue c nea dTcnl y S ohw U i rt,Szo 10 6 J n s , hn ) Sho o p t Si c n ehoo , oco nv sy uhu25 0 ,i gu C i o r e g ei a a
A s at bt c r
0 引 言
P E文 件 格式 是 WI3 N 2环 境 自带 的跨 平 台 可执 行 文件 格 式, 常见 的 E E、 L 、 C S S C M 等文件均 是 P X D L O X、Y 、 O E格 式。使
用该 格 式 , 非 Itl 片 的 C U 上 , n o s一 样 能 识 别 和 在 ne 芯 P Wi w d 使用 。
t e ev s h ms le .As a vr s a ay t r a s f a e s c r y r s ac e ,y u mu tu p c h l re f s ,t e a . o n lss t e i e al i n l s o ot r e u t e e r h r o s n a k t e mawa i t h n C D y u a ay i h m n d ti. u w i r T kn h oe a r g a i c o otW i d w s ali sa c ,i h s p p r w is a ay e h E f e sr cu e a d t e p n il f a i g t e n tp d p o r m n Mir s f n o s a l n t n e n t i a e e frt n z d t e P l tu t r n h r cp e o l i i p c i g n h n e p u d d t e g n r lse so n a k n . A tr ta ,i emso e c mp e so h l a d e c y t n s el e f c s d a k n ,a d t e x o n e h e e a tp fu p c i g f h t n t r f h o r s in s el n n rp i h l,w o u e e t o o h rn i lsa d meh d fu p c i g tc n lg .F n l n t e p i cp e n to so n a k n e h oo y i a y,w ic s e n ay e h a u a e s el l e d s u s d a d a l z d t e c mo f g h l,mu t s e l n e f h c n l l ・h l a d s l c e — i -

基于带权欧拉距离的PE文件壳检测技术

基于带权欧拉距离的PE文件壳检测技术

基于带权欧拉距离的PE文件壳检测技术陈勤;黄剑军;褚一平;方海英【期刊名称】《计算机工程与科学》【年(卷),期】2010(32)7【摘要】越来越多的恶意软件出现在网络上.恶意软件作者通过网络将软件中的恶意代码植入用户的电脑中,从而达到诸如获得用户名与密码的非法目的.为了阻止它们对用户电脑的侵害,软件分析人员必须分析恶意软件的工作原理.但是,如果这些恶意软件加壳,那么分析它们就会变得非常困难,因此必须对他们进行脱壳.脱壳的第一步即检测这些恶意软件是否加壳.本文通过对未加壳和已经加壳的软件PE头部进行分析与比较,提出了带权欧拉距离PE文件壳检测(PDWED)算法,其中包括构造一个含有10个元素的向量,并为每个向量中每个元素分配一个权重值,计算向量的带权欧拉距离.实验结果表明,PDWED能够比较快速而又准确地检测软件是否加壳.【总页数】4页(P1-3,7)【作者】陈勤;黄剑军;褚一平;方海英【作者单位】杭州电子科技大学软件与智能技术研究所,浙江,杭州,310018;杭州电子科技大学软件与智能技术研究所,浙江,杭州,310018;杭州电子科技大学软件与智能技术研究所,浙江,杭州,310018;杭州电子科技大学软件与智能技术研究所,浙江,杭州,310018【正文语种】中文【中图分类】TP309【相关文献】1.基于负荷介数和电气欧拉距离的电网关键环节辨识 [J], 江浩;吕飞鹏;孔德洪2.基于欧拉距离法的制冷压缩机故障判断 [J], 邓锦军3.基于负荷介数和电气欧拉距离的电网关键环节辨识研究 [J], 马铂浩4.一种基于明可夫斯基距离的加壳PE文件识别方法 [J], 吴丽娟;李阳;梁京章5.基于带权语义距离的网页预取方法 [J], 赵欣欣;索红光;刘玉树;张利萍因版权原因,仅展示原文概要,查看原文内容请购买。

PE程序加壳中的反脱壳技术研究

PE程序加壳中的反脱壳技术研究
加壳的全称应该是可执行程序压缩 ,是保护可 执行文件的常用手段 。加壳其实是利用特殊的算 法 ,对 EXE、DLL 文件里的代码和资源进行压缩 。 类似 W INZIP 的效果 ,只不过这个压缩之后的文件 , 可以独立运行 ,解压过程完全隐蔽 ,都在内存中完 成 。解压原理是加壳工具在文件头里加了一段指 令 ,告诉 CPU ,怎么才能解压自己 。加壳虽然增加 了 CPU 负担但是减少了硬盘读写时间 ,实际应用时 加壳以后程序运行速度更快 。
懈地研究后都能找到手工脱壳的方法 ,对于一些加 壳工具还有专门的脱壳机来完成自动脱壳 。因此如 何有效的利用各种编程手段来反脱壳是本文研究的 重点 。 3. 1 花指令
花指令是利用了反汇编时单纯根据机器指令字 来决定反汇编结果的漏洞 ,把无用的数据放在代码 段里 ,这些数据不会影响代码的正确执行 ,但用反汇 编工具时会把这些数据也反汇编出来 ,使得反汇编 出的代码也是错误的 ,因此无法拿来静态分析 。花 指令是现在非常流行而且几乎所有加密壳都得使用 的技术 ,花指令大概分两种 ,一种是行为花指令 ,也 就是某种意义上的代码变形 ,一种是空间花指令 ,也 就是只占用代码空间 ,不会被执行到的 ,但是却可以 让反编译引擎产生幻觉的东西 。使用花指令对付 IDA 静态反汇编非常有效 ,对于 Softice 和 O llyDB G 等动态调试软件也有一定的效果 。
3. 2 SEH ( Structured Excep tion Handling)的利用 SEH 是 W indow s操作系统处理程序错误或异
常的技术 ,当 W indow s检测到异常时 ,执行线程立即 被中断 ,处理从用户模式转向内核模式 ,控制权交给 了异常调试程序 ,它负责查找处理异常的方法 。程 序发生异常时系统的处理顺序如下 :

常见的脱壳方法范文

常见的脱壳方法范文

常见的脱壳方法范文脱壳是指将一个已经加密或保护的程序反编译或解密成原始的可执行文件或源代码的过程。

常见的脱壳方法主要包括静态脱壳和动态脱壳两种方法。

1.静态脱壳方法静态脱壳是指将已经加密或保护的程序文件保存到硬盘,然后通过一些工具进行反编译或解密。

常见的静态脱壳方法有:(1) IDA Pro:IDA Pro是一种功能强大的交互式反汇编软件,可以将二进制文件转换成可读的汇编代码,从而方便进行分析和修改。

(2) OllyDbg:OllyDbg是一种强大的动态调试工具,可以在运行时跟踪程序的执行过程,并在关键处设置断点和查看内存状态,从而找到程序解密和脱壳的关键函数。

(3)PEiD:PEiD是一种可携带的工具,能够识别和解析PE文件,包括可执行文件、动态链接库和驱动程序。

PEiD可以检测程序中使用的加密算法和保护措施,并提供脱壳插件。

2.动态脱壳方法动态脱壳是指通过调试程序的运行过程,找到加密和解密函数的位置和参数,从而在运行过程中直接提取出原始可执行文件或源代码。

常见的动态脱壳方法有:(1) API hooking:API hooking是指通过拦截和替换程序使用的API 函数,来修改程序的行为。

通过在API函数前插入脱壳代码,可以截获加密和解密过程中的数据和密钥,从而得到原始的可执行文件或源代码。

(2)内存转储:内存转储是指将程序在运行时的内存状态保存到文件中,然后利用其他工具对内存进行分析。

通过分析内存中的数据和代码,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。

(3)运行时调试:运行时调试是指通过调试工具在程序运行过程中设置断点、查看内存和寄存器状态,来跟踪程序的执行过程。

通过查看程序的执行流程和数据变化,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。

总结:脱壳方法主要包括静态脱壳和动态脱壳两种方法。

静态脱壳是将已经加密或保护的程序保存到硬盘,然后通过反编译或解密工具进行分析或修改。

脱壳方法总结

脱壳方法总结

脱壳方法总结1. 引言在软件开发和逆向分析领域,脱壳(Unpacking)是指将一个已经被加密或保护的可执行文件还原到其原始状态的过程。

通过脱壳,分析人员可以获取被加密或保护的文件的源代码、算法、关键函数等信息,从而进行后续的逆向工程分析。

本文将总结几种常见的脱壳方法,并介绍它们的原理和使用场景。

2. 静态脱壳方法静态脱壳方法是指在不运行程序的情况下,通过对加密或保护的文件进行静态分析,还原出原始的可执行文件。

2.1. 字节码分析字节码分析是通过对加密或保护的文件进行二进制分析,识别出不同的加密算法或保护机制,从而还原出原始文件。

常见的字节码分析工具有IDA Pro、Radare2等。

2.1.1. IDA ProIDA Pro是一款功能强大的反汇编工具,可以用于对二进制文件进行逆向分析。

通过加载被加密或保护的文件,IDA Pro可以在图形界面下显示程序的反汇编代码。

通过对代码进行分析,可以识别出不同的加密算法或保护机制,从而编写相应的解密脚本。

2.1.2. Radare2Radare2是另一款强大的反汇编工具,它以命令行形式提供了一系列功能,可以对二进制文件进行静态分析。

通过使用Radare2的命令,可以查看程序的反汇编代码,识别出加密或保护机制,并编写相应的解密脚本。

2.2. 调试器调试器是一种用于运行和调试程序的工具,通过对加密或保护的文件进行动态分析,可以观察程序的行为,从而还原出原始文件。

常见的调试器有OllyDbg、GDB等。

2.2.1. OllyDbgOllyDbg是一款运行在Windows平台上的调试器,它可以用于对可执行文件进行动态分析。

通过加载被加密或保护的文件,OllyDbg可以以汇编代码的形式显示程序的执行过程。

通过逐步执行程序,并观察寄存器、堆栈等信息的变化,可以找到解密过程中使用的关键函数和算法。

2.2.2. GDBGDB是一款开源的调试器,可以运行在多种平台上,如Linux、macOS等。

PE文件中脱壳技术的研究

PE文件中脱壳技术的研究

第27卷第9期 计算机应用与软件Vol 127No .92010年9月 Computer App licati ons and Soft w are Sep.2010PE 文件中脱壳技术的研究李 露 刘秋菊 徐汀荣(苏州大学计算机科学与技术学院 江苏苏州215006)收稿日期:2009-01-07。

李露,硕士生,主研领域:网络安全,信息技术。

摘 要 对PE (Portable Executable )文件进行加壳是保护软件的有效手段,但恶意程序也会通过加壳来保护自己。

作为一名病毒分析师或软件安全分析员,只有先将其脱壳,才能进行彻底的分析。

以W indows 记事本程序为实例,首先分析了PE 文件结构及其加壳原理,其次阐述了脱壳的一般步骤,然后从压缩壳和加密壳的角度,重点探讨了脱壳技术的原理和方法。

最后对伪装壳和多重壳及程序自校验进行了探讨和分析。

关键词 PE 加壳 脱壳 伪装壳 多重壳 自校验O N UNPACK I NG TECHNOLO GY FO R PE F I L ESL i Lu L iu Q iuju Xu Tingr ong(School of Co m puter Science and Technology,Soocho w U niversity,Suzhou 215006,J iangsu,China )Abstract Packing Portable Executable (PE )files is an effective mean t o p r otect s oft w are,but mal w are can als o use packing t o p r otect the m selves .A s a virus analyst or a s oft w are security researcher,you must unpack the mal w are first,then can you analysis the m in detail .Taking the notepad p r ogra m in M icr os oftW indows as an in this paper we first analyzed the PE file structure and the p rinci p le of packing,and then expounded the general step s of unpacking .After that,in ter m s of the comp ressi on shell and encryp ti on shell,we f ocused on the p rinci p les and methods of unpacking technol ogy .Finally,we discussed and analyzed the ca mouflage shell,multi 2shell and self 2chec 2king .Keywords PE Packing Unpacking Ca mouflage shell Multi 2shell Self 2checking0 引 言PE 文件格式是W I N 32环境自带的跨平台可执行文件格式,常见的EXE 、DLL 、OCX 、SYS 、COM 等文件均是PE 格式。

加壳与脱壳的原理 -回复

加壳与脱壳的原理 -回复

加壳与脱壳的原理-回复"加壳与脱壳的原理"加壳(Packaging)是指对一个可执行文件或者库文件进行额外的处理,以使其更难以被逆向工程或者破解。

而脱壳(Unpacking)则是指将已经加壳的文件还原为原始的可执行文件或者库文件。

加壳与脱壳的原理涉及到计算机的底层操作以及程序解释执行的过程。

在理解加壳与脱壳的原理之前,我们需要先了解几个相关的概念。

1. 可执行文件(Executable File):指计算机中的一种文件类型,包含一系列的二进制指令,可以被操作系统加载和执行。

2. 动态链接库(Dynamic Link Library,DLL):是一种包含可执行程序、函数、类或其他数据的模块,可以被多个程序同时使用,提供了代码复用的机制。

3. 虚拟内存(Virtual Memory):是计算机操作系统中为执行程序而虚拟化出来的内存,使得程序运行时感觉自己拥有连续的可用内存,实际上是由操作系统进行了地址映射和管理。

加壳的原理如下:1. 加壳算法选择:选择适合的加壳算法进行加壳操作。

常见的加壳算法有简单的多层字节替换、代码混淆、指令重排、函数重命名等。

2. 加壳过程:将被保护的可执行文件或库文件加载到内存中,通过加壳算法对文件进行处理。

加壳算法会在文件的原始指令之前或之后添加额外的指令,以及加密或混淆文件的内容。

这样就改变了文件的结构和指令的布局,使得逆向工程师难以进行分析或者修改。

3. 跳转到加壳后的指令:在加壳过程完成后,控制权会被转移到加壳后的代码,加壳后的代码会负责解密或还原文件的原始指令,然后再将控制权转交给原始指令。

脱壳的原理如下:1. 检测加壳文件:首先需要确定一个文件是否经过加壳处理,可以通过静态或动态分析来判断。

一些特征线索包括文件的大小、文件的进程行为、使用的加密算法等。

2. 脱壳过程:脱壳工具或程序会加载加壳文件到内存中,并且通过特定的算法和技术还原文件的原始指令。

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧脱壳是指将一个已经打包的可执行文件(通常是二进制文件)恢复为原始的、可以读取和修改的形式。

这在软件逆向工程、安全审计和病毒分析等领域都是非常常见的操作。

下面我将为你介绍普通壳的脱壳方法和脱壳技巧。

一、普通壳的脱壳方法1.静态脱壳静态脱壳是指对目标文件进行分析,找到壳的解密和载入代码,然后将其解密出来,恢复原始的可执行文件。

- 调试器脱壳:使用调试器(如OllyDbg、IDA Pro等)来单步执行目标程序,找到壳的解密代码,并通过调试器的内存分析功能来寻找待解密的数据。

一旦找到解密的算法和密钥,就可以将目标文件完全解密出来。

- 静态分析脱壳:通过静态分析工具(如IDA Pro、Hopper等)来逆向目标文件,找到壳的解密算法和密钥,然后将其解密出来。

2.动态脱壳动态脱壳是指在目标程序运行时,通过对程序的运行过程进行监控和分析,找到壳的解密和载入代码,并将其解密出来,恢复原始的可执行文件。

-API钩取脱壳:通过使用一个DLL注入到目标程序的地址空间中,然后使用API钩子来监控API函数的调用,找到壳解密代码的入口点。

一旦找到壳解密代码的起始地址,就可以通过调试器执行目标程序,并在合适的时机将解密出来的代码或数据导出。

- 内存转储脱壳:通过在目标程序的执行过程中,使用内存转储工具(如winhex、ollydump等)将目标程序的内存转储出来,然后使用静态脱壳的方法对内存转储文件进行分析。

二、普通壳的脱壳技巧1.加载器分析在进行脱壳之前,首先要分析目标文件中的加载器。

加载器是壳程序的一部分,用于解压和载入真正的可执行文件。

通过分析加载器,可以确定载入代码和解密算法的位置,并推导出解密算法的密钥。

2.寻找壳代码的入口点在进行脱壳时,需要找到壳代码的入口点,即壳程序开始执行的位置。

可以通过调试器或者静态分析工具来寻找入口点,并标记下来以备后续使用。

3.内存和断点设置通过内存和断点设置,在目标程序运行过程中定位到关键的内存位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第27卷第9期 计算机应用与软件Vol 127No .92010年9月 Computer App licati ons and Soft w are Sep.2010PE 文件中脱壳技术的研究李 露 刘秋菊 徐汀荣(苏州大学计算机科学与技术学院 江苏苏州215006)收稿日期:2009-01-07。

李露,硕士生,主研领域:网络安全,信息技术。

摘 要 对PE (Portable Executable )文件进行加壳是保护软件的有效手段,但恶意程序也会通过加壳来保护自己。

作为一名病毒分析师或软件安全分析员,只有先将其脱壳,才能进行彻底的分析。

以W indows 记事本程序为实例,首先分析了PE 文件结构及其加壳原理,其次阐述了脱壳的一般步骤,然后从压缩壳和加密壳的角度,重点探讨了脱壳技术的原理和方法。

最后对伪装壳和多重壳及程序自校验进行了探讨和分析。

关键词 PE 加壳 脱壳 伪装壳 多重壳 自校验O N UNPACK I NG TECHNOLO GY FO R PE F I L ESL i Lu L iu Q iuju Xu Tingr ong(School of Co m puter Science and Technology,Soocho w U niversity,Suzhou 215006,J iangsu,China )Abstract Packing Portable Executable (PE )files is an effective mean t o p r otect s oft w are,but mal w are can als o use packing t o p r otect the m selves .A s a virus analyst or a s oft w are security researcher,you must unpack the mal w are first,then can you analysis the m in detail .Taking the notepad p r ogra m in M icr os oftW indows as an in this paper we first analyzed the PE file structure and the p rinci p le of packing,and then expounded the general step s of unpacking .After that,in ter m s of the comp ressi on shell and encryp ti on shell,we f ocused on the p rinci p les and methods of unpacking technol ogy .Finally,we discussed and analyzed the ca mouflage shell,multi 2shell and self 2chec 2king .Keywords PE Packing Unpacking Ca mouflage shell Multi 2shell Self 2checking0 引 言PE 文件格式是W I N 32环境自带的跨平台可执行文件格式,常见的EXE 、DLL 、OCX 、SYS 、COM 等文件均是PE 格式。

使用该格式,在非I ntel 芯片的CP U 上,W indows 一样能识别和使用。

对PE 文件加壳,能较好地保护原程序。

但病毒和木马也会利用加壳技术来保护自己,因为加壳后程序执行结果不变,但代码发生了变化,从而使杀毒软件无法查杀。

作为一名病毒分析师或者软件安全研究员,如果不懂得脱壳技术,将很难对这些恶意程序进行分析。

据瑞星公司截获的病毒样本统计,90%以上的病毒文件都经过加壳处理,可见掌握脱壳技术十分重要。

现有文章大都进行加壳技术的探讨[1-3],本文则着重研究脱壳技术。

1 壳的介绍壳是一段附加在原程序上的代码,它先于真正的程序运行并拿到控制权,在完成程序保护任务后(检测程序是否被修改,是否被跟踪等),再将控制权转交给真正的程序,其运行过程与病毒有些相似。

在形式上又与W I N RAR 类的压缩软件类似,运行前都需要将原程序解压。

但壳对程序的解压是在内存中进行,对用户来说完全透明,用户感觉不到壳的存在。

壳分为压缩壳和加密壳。

压缩壳只是为了减少程序体积而对资源进行压缩,便于传输,具有一定的保护作用。

常见的压缩壳有UPX 、ASPCAK 、TE LOCK 、PE L I TE 、NSP ACK 等。

加密壳是使用各种手段对程序资源进行保护,防止其被反汇编或跟踪,文件加壳后是否变小不是其主要目标。

常见的加密壳有AR MA 2D I L LO 、ASPROTECT 、ACPROTECT 、EPE 、S VKP 等。

目前一些壳已兼具有两种功能,即能压缩资源,又能加密资源。

2 PE 结构框架PE 文件使用一个平面地址空间,所有代码和数据都被合并成一个很大的结构。

文件内容由属性相同的区块组成,各区块按页边界对齐,大小没有限制。

每个区块都有不同的名字,用来表示区块的功能。

图1是W indows98下记事本Notepad .exe 程序的PE 结构图。

从图中可以看出PE 文件由几个连续的区块组成。

先后由DOS 头部、PE 头部、区段表以及各个区段组成。

其中.text 是代码段,.data 是已初始化的数据段,.idata 是输入表段,.rsrc 是资源段,.rel oc 是基址重定位表段。

图1 W indows98记事本PE 结构图280 计算机应用与软件2010年虚拟偏移也称相对虚拟地址,是PE 程序载入到内存后在386保护模式下相对于基地址的偏移量。

物理偏移也称文件偏移,是PE 文件存储在磁盘上相对于文件头的偏移量。

原始大小是文件在磁盘上的结构大小。

从图1中可以清晰地看到DOS 头、PE 头、区段表和各个区段的排列顺序与大小。

使用W inhex 打开未加壳记事本程序,其DOS 头部和PE 头部的十六进制代码如图2所示。

图2 W inhex 打开Notepad .exe 的DOS 头和PE 头由图2可以看出DOS 头以“M Z ”(0x4D5A )标志开始,在偏移0x14和0x16处指明DOS 代码的入口I P 和CS,在偏移0x3C处指明PE 头的起始位置(0x00000080)。

紧接着是PE 头(在0x80处),它由“PE \0\0”(0x50450000)标识开始,其后是20个字节的文件头和224个字节的可选头,整个PE 头有248个字节。

在偏移0x86处指明区段个数0x0005,如图1所示正好5个区段。

在偏移0x A8处指明OEP (O riginal Entry Point 原始入口点,程序执行的第一条指令位置)地址为0x000010CC,在0x AC 处指明代码段基址(.text 段)为0x00001000,在0x B4处指明程序装载基址0x00400000。

另外PE 头还包含文件对齐大小、内存对齐大小等等其他信息。

其后是节表(secti on table ),它是一个结构型数组,其成员数表示该PE 文件的节数,每个成员中包含对应节的属性。

每个节成员有40个字节,该记事本有5个成员,共200个字节(十六进制为C8)。

最后就是各个区段结构,区段的大小没有限制。

3 加壳原理加壳是应用某种算法对原程序进行压缩(压缩壳)或加密(加密壳),并使程序运行时先运行对应的解压或解密代码。

加壳过程一般为,首先在原程序中新建一个区段用来存放加密加压和解密解压代码,其次将原程序数据压缩或加密,最后将程序的入口点修改为壳代码入口。

程序的入口点即程序开始执行的第一条指令的地址。

如图3是Notepad .exe 加A s pack 2.12壳后的PE 结构图。

从图中可以看出加壳后,程序会多.as pack 和.adata 两个区段,区段表的大小也增加到280个字节(十六进制:118)。

其中.as pack 是A s pack 2.12壳代码区段,.adata 是附加数据区段。

A s pack 属于压缩壳,通过对比发现,壳对原程序中的数据做了压缩处理,加壳后的区段原始大小均比未加壳时小。

图3 记事本使用A s pack 2.12加壳后的PE 结构图加壳会修改原程序的执行参数,如表1所示,是加壳前后Notepad .exe 的执行参数对比表。

从表中可以看出加壳后其入口点被修改成壳代码的区段,其首字节和EP 区段均发生了变化。

表1 notepad .exe 加壳前后参数对比表W indows 记事本未加壳加A s pack 壳后入口点(OEP )000010CC 0000D001文件偏移量000010CC 00004201EP 区段.text .as pack 首字节55,8B ,EC,8360,E8,03,00壳信息VC ++ 6.0A s pack 2.124 脱壳原理脱壳就是将加壳后的程序解压或者解密,使程序从原始入口点开始运行。

脱壳分为硬脱壳和软脱壳。

硬脱壳也称为静态脱壳,是根据加壳程序的算法,写出逆向的算法,就像压缩与解压缩一样。

如UPX 的壳就有相应的脱壳程序。

软脱壳也叫动态脱壳,该方法将程序加载到内存运行,使其自行脱壳后,抓取内存镜像,再重新构造标准的执行文件。

该方法能较好对付加密壳和变形壳。

脱壳一般会按查壳、寻找OEP 、du mp 程序、修复的顺序进行。

4.1 查 壳现有工具如PE I D 、F I 、PE 2SCAN 等都能较好查出壳的类型。

查壳的原理是将程序OEP 附近的代码和各种壳代码进行比较,从而判断程序是否加壳以及加哪种壳。

类似于杀毒软件查杀病毒,都是通过特征码进行扫描对比。

只是查壳的特征码对比一般都是在程序OEP 附近,而病毒的特征码则可以定位在程序的任何部分。

4.2 寻找O EP壳在完成自己的任务后,会将控制权转交给真正的程序。

由于壳代码和原始代码在不同的区段,两者之间距离较远,那么由壳代码区段运行到原始代码区段必定会存在一个大的跳转,因此可以根据大跳转来确定OEP 。

另外,每种语言编写的程序其OEP 处的代码都有自己的特征,类似查壳的原理,就可以根据代码特征来判定OEP 。

如表2所示,是不同的语言编写的程序在OEP 处的反汇编代码。

表2 使用不同语言编写的程序其O EP 处的反汇编代码表编程语言机器码汇编代码Del phi5588EC 83C4F0B8A86F4B00P USH E BPMOV EBP,ESP ADD ESP,210MOV EAX,PE .004B6F A8VC ++558BEC 83EC 4456P USH E BP MOV EBP,ESP S UB ESP,44P USH ESI VBFF256C10400068147C4000J MP DWORD PTR P USH PE .00407C14CALL <J MP .&MS VBVM60.#100>第9期 李露等:PE文件中脱壳技术的研究281Builder C++EB1066J MP SHORT PE.DB66Das m 6A00E8C50A0000P USH0CALL<J MP.&KERNEL32.Get M odul HandA>4.3 du m p内存所谓du mp就是转存,将内存中的进程数据抓取出来转存为文件格式。

相关文档
最新文档