手脱实现双进程标准保护ArmaDillo壳_第1页
手脱实现双进程标准保护ArmaDillo壳_第2页
手脱实现双进程标准保护ArmaDillo壳_第3页
手脱实现双进程标准保护ArmaDillo壳_第4页
手脱实现双进程标准保护ArmaDillo壳_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、穿山甲壳的一个重要特点就是:寻找OEP本身不难,但Armadillo会对IAT进行加密处理,导致后面dump出的内容无效,因此寻找OEP之前,需要绕过IAT的加密处理,以后dump后才能方便地用ImpRec修复。程序名为notepad.exe,运行后有两个notepad.exe进程。原理大概是互相通过一个Mutex来通讯检测对方是否存在。OD中可以通过手动汇编的方式进行双变单。此样本运行后有两个进程。双进程保护。1OD加载程序,对OpenMutexA函数下断,F9运行2观察栈 3 手动汇编,使进程由双变单Ctrl+G 定位到 00401000 地址,手动输入汇编代码:PushadPushfdP

2、ush 0012FDD8Xor eax,eaxPush eaxPush eaxCall CreateMutexAPopfdPopadJmp OpenMutexA 截图如下:然后在 00401000 出 新建EIP ,程序从此处运行Jmp OpenMutexA 处跳到OPenMutexA函数处取消OpenMutex断点,消除00401000处修改的代码,恢复原状接下来在系统空间内对 GetModuleHandleA 函数下硬件执行断点 He apiF9 1次:0012E79C 77C079B2 /CALL 到 GetModuleHandleA 来自 77C079AC0012E7A0 77BE31

3、BC pModule = "kernel32.dll"F9 2次:0012E61C 74683C4E /CALL 到 GetModuleHandleA 来自 MSCTF.74683C480012E620 0012E624 pModule = "C:WINDOWSsystem32ntdll.dll"F9 3次:0012E624 74683C4E /CALL 到 GetModuleHandleA 来自 MSCTF.74683C480012E628 0012E62C pModule = "C:WINDOWSsystem32imm32.dll"

4、;F9 4次:0012E570 74683C4E /CALL 到 GetModuleHandleA 来自 MSCTF.74683C480012E574 0012E578 pModule = "C:WINDOWSsystem32KERNEL32"F9 5次:0012ECFC 7365D4BA /CALL 到 GetModuleHandleA 来自 msctfime.7365D4B40012ED00 0012ED04 pModule = "C:WINDOWSsystem32ntdll.dll"F9 6次:0012EE64 5D175324 /CALL 到 G

5、etModuleHandleA 来自 5D17531E0012EE68 5D175370 pModule = "kernel32.dll"F9 7次:0012EF24 77F45CD0 /CALL 到 GetModuleHandleA 来自 77F45CCA0012EF28 77F4501C pModule = "KERNEL32.DLL"F9 8次:0012F73C 00433EF3 /CALL 到 GetModuleHandleA 来自 练习用NO.00433EED0012F740 00000000 pModule = NULLF9 9次:(时间稍长

6、)00129528 00BB6DF3 /CALL 到 GetModuleHandleA 来自 00BB6DED0012952C 00BCBC1C pModule = "kernel32.dll"00129530 00BCCEC4 ASCII "VirtualAlloc"F9 10次:00129528 00BB6E10 /CALL 到 GetModuleHandleA 来自 00BB6E0A0012952C 00BCBC1C pModule = "kernel32.dll"00129530 00BCCEB8 ASCII "Vi

7、rtualFree"F9 11次:0012928C 00BA5CE1 /CALL 到 GetModuleHandleA 来自 00BA5CDB00129290 001293DC pModule = "kernel32.dll"Ok Alt+F9 回到程序领空以下寻找OEP有两种方法一是 修改jmp后往下跟,直到找到下图 jmp + salc 是对IAT加密结束的标志,在jmp处下断,Shift+F9运行,断在这儿。回到上面,把jmp的改动恢复成je。至此IAT加密被绕过了。下一步:清除GetModuleHandleA断点后下断he CreateThread,Shift+F9运行一次,断后Alt+F9返回F8 走下去 一直到 Call ecx 即可到达OEP另外一种方法是:从 GetModuleHandleA 返回程序领空后,将je 修改为 jmp去掉GetModuleHandleA的硬件执行断点然后alt+M 打开内存面板 对00401000处下 内存访问断点,F9运行到达OEP附近:F8 往下走吧 没多少步就到达Call Ecx 了 ,Ecx 中的地址即为OEPF7 单步进入到达OEP:接下来就是dump ,修复导入表了Dump的时候最好不好用OD插件 否则很可能会卡死Dump使用LordP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论