【Exploit-ID】脱壳实战_译者小樱.doc.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Exploit-ID】脱壳实战_译者小樱.doc

【翻译】脱壳实战 作者:Arunpreet Singh 译者:Sakura(小樱) 声明:原文于2011-12-14刊登在国外著名安全网站Exploit-ID,转载请注明出处。 /link/63.pdf 使用工具 1)OllyDbg 2)Process Explorer 3)PUPE 4)PE Tools 5)Hex WorkShop什么是如果你在方面有研究,那你一定听过或者使用过它。目的是保护可执行文件,这给分析或者增加了难度。在多数,的主要作用是使它们完全不被检测到。 事实上,一般的表现形式是可执行文件,我的意思是它们的来源是无法识别的,公开的可以被杀毒软件检测到。的用处是使它们无法被检测。 “加壳”原理 加壳包括了两个部分1)目标文件 2)Stub,就是一段字节型数据,是汇编代码的数据形式,在插入目标进程后可以被执行。两者是如何一起工作的呢? 。将使用加密算法(例如常用的RC4,AEC)加密。 通过加密,就可以杀毒软件的静态检测。在静态检测当中,杀毒软件尝试去找出可执行文件的模式(patterns)并匹配签名。但是因为文件已被编译,所以杀毒软件现在找不出文件的模式。 在可执行代码前添加 当你运行可执行文件时,将同时运行stub,这时stub将对加密文件进行解密。 注意:解密后的文件仍在内存中。 内存中执行解密文件。 这其实是的核心部分,也被叫做“”。有很多PE的方法。但在大多数情况下,采用了一种方法从内存中执行文件,这是我们下面要讲的重点内容。 让我来解释一下这个方法。这个方法的原始链接地址是:.sg/code/loadexe.html 我只是重复了一下这些步骤。我建议你你参考原文,理解可以更深刻些。 在原文中列出的步骤如下: 使用带有CREATE_SUSPENDED参数的CreateProcess API创建一个挂起进程,任意一个EXE文件都可以,把这个叫做第一个EXE。 调用GetThreadContext API获取挂起进程的寄存器值(线程内容)。挂起进程的EBX寄存器指向进程的PEB。EAX寄存器中包含了(第一个EXE)进程的入口点。 从挂起进程的PEB中获取基地址,例如[EXB+8]处。 在内存中加载第二个EXE(使用ReadFile),并手动执行必要的(alignment)。如果文件和内存不同,则是必要的。 如果第二个EXE文件的基地址跟挂起进程相同,并且映像大小=挂起进程的映像大小,那就使用WriteProcessMemory函数去把第二个EXE的映像进内存空间的挂起进程中,从基地址开始。 否则,使用ZwUnmapViewOfSection去第一个EXE文件的映像(由ntdll.dll导出),并用VirtualAllocEx在挂起进程的内存中为第二个EXE文件分配足够的内存空间。一定要提供第二个EXE文件的基地址给VirtualAllocEx API,确保Windows在特定的区域给我们提供内存。下一步,复制第二个EXE的映像到挂起进程的内存空间中从分配地址开始(使用WriteProcessMemory) 修补第二个EXE的基地址到挂起进程的PEB[EBX+8]处。 设定线程thread的EAX到第二个EXE的入口点处。 使用SetThreadContext API修改挂起进程的线程内容Thread context。 使用ResumeThread API去重新执行挂起进程。 一般的,当你在Ollydbg中加载一个打包的执行文件时,通常会出现警告“the code section is compressed”(代码区域已被压缩)或者“the entrypoint is outside the code section”(入口点不在代码区域内),不管怎样,Olly是在给你暗示说执行文件是打包的。不过被加密过的执行文件(使用上面所列的步骤加密的)在Olly中加载时不会出现任何的警告。 解压缩包(Unpacking) 使用PEID扫描 看上去很无辜 :P 让我们加载到Olly..看有没有警告 一切看上去都很正常,看起来很像是个正常的VB执行文件,Olly中没有出现任何的警告。 我们的目标是在上述所用方法中,。接下来,给CreateProcessA和CreateProcessW(两者ascii和unicode版本)如果它中断,它是否在挂起模式SUSPENDED MODE(同时你也可以把断点放在ReadProcessMemory和WriteProcessMemory APIs去更准确地检查下) 我把断点放在 CreateProcessW和CreateProcessA,并在Olly上运行。正如你所看到的,它在CreateProcessW处中断..同时你也看到堆stack中的参数

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档