脱壳入门初级教学

上传人:缘*** 文档编号:295002394 上传时间:2022-05-19 格式:PDF 页数:63 大小:8.31MB
返回 下载 相关 举报
脱壳入门初级教学_第1页
第1页 / 共63页
脱壳入门初级教学_第2页
第2页 / 共63页
脱壳入门初级教学_第3页
第3页 / 共63页
脱壳入门初级教学_第4页
第4页 / 共63页
脱壳入门初级教学_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《脱壳入门初级教学》由会员分享,可在线阅读,更多相关《脱壳入门初级教学(63页珍藏版)》请在金锄头文库上搜索。

1、第一课PE格式要想学脱无,笫一步就得掌握PE格式,PE是PortableExecutable File Format(可移植的执行体)简弓,它是目前Windows平台上的主流可执行文件格式。Microsoft Visual C+捉供的WINNT.H里有PE数据结构的完整定义。推荐文抖ah007翻译的“PE文件格式”1.9版qduwg翻译的PE文件格式Iczelions的PE文件格式微软官方提供的PE文档(英文)(Revision8.1-March27,2008) 微软官方提供的PE文档(Revision8.1)(zhzhtst翻译成中文)探PEWin32可可一文之旅(zhzhtst翻、)深入剖

2、析Win32可移植可执行文件格式(zhzhtst翻译)PE结构各字段偏移参考学习PE格式的为法是自己先准备一个十六进制工具,如HexWorkshop,WmHex,用这些工具打开一个EXE文件对照若学。强烈推荐你用Stud PEv2.205这款上具辅助学习PE格式。PE格式学习的重点是在输入农(ItnportTable)这块。Stud_pE工具界面:+ DOS H1&d1r 叩H“比_ 心II.I丘b”0fSIctiOISTi心St一pPointerToS,-bolT心1阮bmlfS,-bol雹Si”of0pti叩斗心”口racteristi c置+ Optional HHur -D巳扣,cto

3、ri”正portT心1五portT心1及ISO立ClT心11正c1pti妞T心lec.rtific.tI T心1B”;1及1loc龟tiOITd D1ln屯比心t1ct它IGlobal Ptr 匹T心11Load Confi c T心l1Bo-and切ortPE结构图:88 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E:0 00 00 00 OE 1F巳0巳008书09CO 21

4、88 01书CCD 21 S, ce E9 73 20勹 072 EF E712 E1 ED 20 E3 E1扛扛EF?书20 E2 ES 20 勹 275 扛20 E9 EE 20 噜令F 53 20 ED EF E 龟ES2!:. 00 00 0入2400 00 00 00 00 00 00至巳CBS SB入1入8巳书3S F2 入8巳3S r2 入8巳书3S r CB EB 3入F2 入9乙书3S r2 CB 乙8SS F2 入9E, 3S F2 CB EB C6 F2 BB E书3SF2入8E书3,r2 C3 E噜35F2 CB EB CB r2入9E 3S F2 CB巳BC入F2Br

5、 E书3SF2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |50,s oo oo|,C O1 03 00 C3 7C 10 41 00 00 00 00 F 00 00 00 00 EC 00 OF 01 08 01 07 0入0078 00 00 Size : Block Size : Ox300 OK c扫1如云试写,令COFF符子表COFF行另. . .reloc 才忒呾今d叩.te. 汃认GE_SEC可OK延AD邸I!11AC旦SECTIOK.延ADER.tAGE_SECTIO:K延ADER已趴玺SECTIOK延ADERI 共拦目云

6、未己1AGE-OPTIO入ALHEADER32EJAC七mLE-HEADE.RPE ,o,o DOS比bDOS立HE心ERPE文件框架结构第二课SEH技术血l. 冯试考,色勹块cs立0立丁坛衮( S忒d()i.Tall心| -+ PE文件头十DOS玄甘十结构化异常处理(StructuredException H and ing, SEI-I)是Windows操作系统处理程序错误或异常的技术。SEH是Windows橾作系统的一种系统机制,与特定的程序设计语言无关。外壳程序里大豐地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。SEH in ASM研究(一)byhume SEH in ASM

7、研究(二)byhume Structured Exce 加密与解密二版菜鸟学习笔记(2)-SEH结构化异常处理byytcswb 由千Ollydbg对S印处理异常灵活,因此脱芫用Ollydbg会大大提高效率。附CONTEXT结构环境:代码typedef struct _CONTEXT l*OOO*I DWORD ContextFlags; / *004*/ DWORD DrO; /*008*/ DWORD D rl; l*OOC*I DWORD Dr2; /*010*/ DWORD Dr3; / *014*/ DWORD Dr6; / *018*/ DWORD Dr7; /*OlC*/ FLOA

8、TING_SAVE_AREA FloatSave; l*08C*I DWORD / *090*/ DWORD /*094*/ DWORD / *098*/ DWORD l*09C*I DWORD l*OAO*I DWORD l*OA4*/ DWORD /*OAS*/ DWORD l*OAC*I DWORD l*OBO*I DWORD /*0B4*/ DWORD SegGs; SegFs; SegEs; SegDs; Edi; Esi; Ebx; Edx; Ecx; Eax; Ebp; /*0B8*/ DWORD l*OBC*I DWORD l*OCO*I DWORD l*OC4*/ DWORD

9、 l*OC8*/ DWORD l*OCC*I BYTE . .,s; sgs .,Ca.,S pglpg ieFse ESEES ExtendedRegistersMAXIMUM_SUPPORTED _EXTENSION ; /*2CC*/ CONTEXT; 第三课认识壳1什么是壳?在一些计算机软件巠也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先千程序运行,拿到控制权,然后九成它们保扩软件的任务。由千这段程序和自然界的壳在功能上有很多相伺的地方,菲千命名的规则,就把这样的程序称为壳”了。推荐文档:一切从“壳“开始描述壳的示意图:壳是指在一个程序的外面再包袤上另外一段代码,保

10、护里面的代码不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务,二 Loade氓载映射气. 温. . . . . . . . Loade(外壳). . . . , . . . , ? ; . . . / ,. EXE文件压缩数据(原EXE文件)EXE文件EXE原文件加壳后运行映射到内存2壳的加载过程这里谈的加无工具刁、是WinZIP、WinRAR等数据压缩工具,而是谈压缩可执行文件EXE或DLL的工具。加壳过的EXE义件是可执行文件,它可以同正常的EXE义件一样执行。用户执行的实际上是外壳程序,这个外壳程序负贡把用户原来的程序在内存中解压缩,并把控制权

11、交还给解开后的真正程序,这一切下作都是在内存中运行的,整个过程对用户是透明的。光和病毒在某些方面比较类似,都需要比原程序代码更早的获得控制权。先修改了原程序的执行文件的组织结构,从而能够比原程序的代砃提前获得控制权,并且不会影响原程序的正常运行这里简单说说一般壳的装载过程。(参考了Ljtt以前写过的一篇义t;r))获取壳n己所面要使用的API地址如果用PE编铝丁具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kerne132.dII以及GetProcAddress这个API函数。亢实际上还需要其他的API函数来完成它

12、的上作,为了隐藏这些API,它般只在壳的代码中用显式链接方式动态加载这些API函数3个脱壳相关的重要函数介绍2)解密原程序的各个区块(Section)的数据壳出千保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位罚。如果加壳时用到了压缩技术,那么在解讫之,前还有逆上序,当然是解压缩。这也是些壳的特色之比如说原来的程序文件未加壳时12M大小,加壳后反而只有儿白K。3)重定位义件执行时将被映像到指定内存地址中,这个初始内存地址称为菲

13、地址(ImageBase)。当然这只是程序文件中声明的,程序运行时能够保证系统一定满足其要求吗?对千EXE的程序文件来说, Windows系统会尽豐满足。例如某EXE文件的基地址为Ox400000,而运行时Windows系统提供给程序的基地址也同样是Ox400000。在这种情况下就不需婓进行地址”重定位”了。由千不需要对EXE文件进行”重定位”,所以加壳软件把原程序文件中用于保存重定彴信息的区块干脆也删除了,这样使得加完后的文件史加小巧。有些工具提供“WipeReloc的功能,其实就是这个作用。不过对千DLL的动态链接)车文件米说,Windows系统没有办法保证每一次DLL运行时提供相同的基地

14、址。这样“叩定位”就很正要了,此时壳中也需要提供进行“霍定位”的代码,否则原程序中的代码是无法正常运行起来的。从这点来说,加壳的DLL比加壳的EXE更难修J下。4) HOOK-AP! 程序文件中的输入农的作用是让Windows系统在和序运行时提供API的实际地址给程序使用。在程序的第一行代码执行之前,Windows系统就宪成了这个工作。壳一般都修改了原程片文件的输入表,然后自己桢仿Windows系统的工作米埴充输入表中相关的数据。在填充过程中,外壳就可填充HOOK-API的代码的地址,这样就可间按地获得程序的控制权。5)跳转到程序原入口点(OEP)从这个时候起壳就把控制权交还给原程序了,一般的

15、壳在这里会有明显的一个“分界线”。但现在的猛壳己没这界限了,先里有肉,肉里有壳一般壳的装载过程吓曹pediy.c哑获取壳自己所霄耍使用的API地址毕它反程产的各个区块的妏摆重定位跳转到程产原入口点(OEP)3压缩引擎.乙GetProcAddress,Loadlibr可y1之氏态加载仁买白gAPI邑兑I模拟Windows加载器1各类加芫软件,其压缩算法一般不是自己实现的,大多是调用其他的压缩引浓。目前压缩引擎种类比较多,不同的庄缩引挚有不同特点,如一些对图像压缩效朱好,一些对数据压缩效果好。而加壳软件选择斥缩引擎有一个特点,在保证压缩比的条件下,压缩速度慢些关系不是人大,但解压速度一定要快,这样

16、加了壳的EXE文件运行起来速度才不会受太大的影响例如卜面几个压缩引擎就能满足这要求:I. aPLib压缩引繁http:/ JCALGl压缩引浓,相对丁aPlib,JCALGl对丁大文件效果好些。3. LZMA压缩引莘http:/www.7-zip.org/zh-cn/sdk.html,LZMA是7-Zip程序中7z格式的默认压缩符法,压缩率很高。第四课常见压缩壳与加密壳加壳软件按照其加壳目的和作用,可分为两类:一是压缩(Packers),二是保护(Protectors)。压缩这类壳午要目的是减小和序体积,如ASPacK、LJPX和PECompact等。另类是保护程序,用上了各种反跟踪技术保扩程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素,如ASProtect、Armadillo、EXECryptor等。随着加壳技术的发展,这两类软件之间的界线越来越模糊,很多加壳软件除具有较强的压缩性能,向时也有了较强的保护性能。目前流行的一些无可以参考这里:ackers.htm1常用压缩壳介绍1). ASPacK -i-页:http:/11飞vw.aspack. com/ ASPack是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号