- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
脱壳技术ppt要点
逆向工程技术 lybliu@cuit.edu.cn, QQ (教务处?教务管理? 教师课件) 一个简单的加壳软件的例子: 加壳后: 程序运行壳代码解密得到原来的代码: 加壳程序给原程序加壳的过程: 添加一个分节; 为新分节添加代码(这个代码即为壳代码,用于解密加密后的section) 找到第一个代码节(即有executable属性的节) 将找到的代码节进行加密。 第13章 脱壳技术 壳和病毒很类似,都需要比原程序代码更早地获取控制权。壳修改了原程序的组织结构和执行流程,能够比原程序提前获得控制权,而不会影响原程序执行。 脱壳技术 脱壳技术 保存程序入口参数 加壳程序初始化是保存各个寄存器的值,外壳执行完毕后,再恢复各个寄存器的值最后再跳到原程序执行。通常使用pushad/popad,pushfd/popfd等指令来保存和恢复现场。 脱壳技术 脱壳技术 解密原始程序各个区块(section)的数据 壳出于保护原程序的目的,一般都会加密 或者压缩原程序各个区块。在程序执行时, 会由外壳程序将各个区块的数据进行解密, 以让程序正常运行。壳一般是按区块进行加 密的,那么解密时也是按照区块进行解密的 ,并且会把解密的区块数据按照区块的定义放 在合适的内存位置中。 脱壳技术 脱壳技术 IAT初始化 由于加壳时外壳程序自己构建了一个输 入表,并让PE头文件中的输入表指针指向了 自建的输入表。所以,PE装载器只会对自建 的输入表进行填写。原来PE的输入表 的填写,只好由外壳程序来实现。外壳要做 就是将这个新的输入表结构从头到尾扫描一 遍,对每一个DLL所引入的所有函数重新获 取地址,并填写在IAT中。 脱壳技术 5、重定位项处理 进行重定位项处理的主要是在被加壳的 DLL文件中,因为原程序的最终加载过程是 由外层程序来加载到内存中,而DLL文件由 于被加载时需要进行重定位处理,所以针对 加壳后的DLL文件,外壳程序需要进行重定 位(因为EXE总是会被加载到优先加载的 基地址(如0,所以不要进行重定位处理)。 脱壳技术 跳转到程序入口点(OEP) OEP(Original Entry Point)原始入口点,当程序完成上述操作后,就会跳转到原始的程序入口点去执行,因此这里就是外壳程序和原始程序的“分界线”,我们进行脱壳时就是找到程序的原始入口点,然后将相应的程序代码从内存空间中拷贝出来(dump)得到原始程序。 脱壳技术 脱壳就是找到程序的原始入口点,然后dump出内存中数据到文件,并修复成一个可运行文件。 脱壳技术 脱壳技术 查壳可以通过查壳软件来查询,一般使用 PEiD和Fi来进行查询,查壳软件查到的壳不 一定准确。 脱壳技术 使用Fi查壳结果: 脱壳技术 寻找OEP就是寻找程序的原始入口点。由于程序在运行时会完成解密和解压缩操作,最后会跳转到程序原始入口点,因此通过动态跟踪就可以找到程序入口位置。 脱壳技术 寻找OEP一般通过以下方法: 方法一:单步跟踪法(根据跨段指令寻找OEP) 该方法针对一些简单的壳可以使用这种方法,用 OD载入程序后,单步执行F8,一直跟踪到程序大跳 转时,开始dump内存。 脱壳技术 方法二:ESP定律法(根据堆栈平衡原理找OEP) 由于外壳程序在开始运行时需要保护现场,结束 后恢复现场,从而保持堆栈平衡。 演示: 寻找rebpe.exe的OEP(原始入口点) 脱壳技术 方法三:利用内存访问断点找OEP 使用内存访问断点来进行脱壳需要明白以下几个问题: 1.什么是内存断点 2.如何在寻找OEP时使用内存访问断点 i.内存断点就是通过将需要设置断点的内存页设置 为不可访问属性,这样,当程序访问相关内存地址 时就会发生异常,从而中断下来。一般分为内存访 问和内存写入这两种断点。 脱壳技术 ii、如何使用内存断点来访问OEP 壳如果要把原来的代码运行起来就必须要解压和解密原来的代码,而这一过程正是对代码段(code段)的写入。解压和解密完毕后,外壳程序需要从壳代码区段JMP到原来的代码段,而这也正是对代码段的执行访问。 因此如果载入OD后,直接对code段下内存访问断点,程序一定会中断在对code段的写入代码上面。 脱壳技术 两次内存访问一次性断点法: 两次内存访问一次性断点就是通过两次内存断点的方式来找到OEP。 脱壳技术 方法四:根据编译语言寻找OEP 各类语言都有自己的入口特征,一般在主函数( Main函数)之前都会执行一些初始化函数,一般可 以利用这些特征寻找OEP。 在VC6编写的函数中一般都有如下一下函数会被 调用。GetCommandLineA(w),Ge
您可能关注的文档
- 脑梗死健康宣教内一科张宝华.ppt
- 脑心通-现代心脑血管防治新进展.ppt
- 脑梗死-教学查房.ppt
- 脑梗死护理诊断.ppt
- 第3章机械零件的强度.ppt
- 脑梗死护理查房2.月.ppt
- 脑溢血康复训练讲述.doc
- 第3章CPU与主板.ppt
- 第3章物质的聚集状态与物质性质学业分层测评13.doc
- 脑白金营销案例.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)