http://www.52pojie.cn/thread-67701-1-1.html  发表于 2010-10-15 21:36:31

VMP脱壳后,有个antidump,也就是说,加了VMP外壳后,又VM掉了某关键代码后,脱壳后,就得处理antidump部分,不然程序会出错。

下面就简单的说下我个人的处理方法,当然,方法很多,我能力有限,只会这种垃圾的方法。当然比补区段要看点,补区段实在是不得已而为止的方法。
脱壳部分就不说了,可以直接看视频,就直接去看antidump部分。

关键是寻找2条handler,来看下这2条handler吧。

VM_Add32:

    0040DD86 Main     rol ax,cl0040DD89 Main     mov eax,dword ptr ss:[ebp]                ; EAX=35881B1A0040DD8C Main     cmp dx,ax0040DD8F Main     add dword ptr ss:[ebp+4],eax0040DD92 Main     jmp dumped.0040B0700040B070 Main     call dumped.0040C7300040C730 Main     pushad0040C731 Main     pushfd0040C732 Main     pop dword ptr ss:[esp+20]0040C736 Main     pushfd0040C737 Main     jmp dumped.0040DCBA0040DCBA Main     jmp dumped.0040C71C0040C71C Main     push dword ptr ss:[esp+24]0040C720 Main     pop dword ptr ss:[ebp]0040C723 Main     mov byte ptr ss:[esp+4],bl0040C727 Main     lea esp,dword ptr ss:[esp+28]0040C72B Main     jmp dumped.0040CD430040CD43 Main     setge dh                                  ; EDX=004001860040CD46 Main     jmp dumped.0040DC1E0040DC1E Main     pushad

VM_SetEip:

    0040BC90 Main     movsx si,cl                               ; ESI=004100040040BC94 Main     jmp dumped.0040DA710040DA71 Main     mov esi,dword ptr ss:[ebp]                ; ESI=0040E5DE0040DA74 Main     call dumped.0040DC690040DC69 Main     test bl,0AE0040DC6C Main     bt sp,90040DC71 Main     mov byte ptr ss:[esp],ch0040DC74 Main     add ebp,4                                 ; EBP=0012FA380040DC77 Main     pushad0040DC78 Main     pushfd0040DC79 Main     push 8116F710040DC7E Main     pushfd0040DC7F Main     lea esp,dword ptr ss:[esp+30]0040DC83 Main     jmp dumped.0040CD270040CD27 Main     bsr dx,ax                                 ; EDX=004000000040CD2B Main     rcr bl,4                                  ; EBX=8D43C6EB0040CD2E Main     inc bl                                    ; EBX=8D43C6EC0040CD30 Main     sal bl,4                                  ; EBX=8D43C6C00040CD33 Main     mov ebx,esi                               ; EBX=0040E5DE0040CD35 Main     push edx0040CD36 Main     rcl dx,cl0040CD39 Main     cmp cl,3D0040CD3C Main     add esi,dword ptr ss:[ebp]0040CD3F Main     lea esp,dword ptr ss:[esp+4]0040CD43 Main     setge dh                                  ; EDX=004001000040CD46 Main     jmp dumped.0040DC1E0040DC1E Main     pushad......后半段了,省略0040DC1F Main     mov al,byte ptr ds:[esi-1]                ; EAX=00000016

然后,在2句关键的代码处下好断点:

1. 0040DD8F Main     add dword ptr ss:[ebp+4],eax

2.0040DA71 Main     mov esi,dword ptr ss:[ebp]                ; ESI=0040E5DE

下好断点后,跑下面的脚本,主要是为了记录eax和esi的值:

    var teaxvar tesivar logfilevar infomov logfile,"log.txt"loop:runcmp eip,0040da71je Exitmov teax,eaxmov tesi,esieval "eax:{teax} esi:{tesi}"     mov info,$RESULTwrta logfile,infojmp loopExit:ret

跑完脚本后,看日志,一般就是最后的2,3行,如:

eax:CC59F905 esi:410EBE
eax:0 esi:410EB8
eax:154F78 esi:410E89

其中eax:0 esi:410EB8就是关键了。
所以,修改的方法呼之欲出,
在0040DD8F Main     add dword ptr ss:[ebp+4],eax
下好断点,当esi==410EB8,修改eax的值为4即可。
可以修改的方法时,原来eax==4,则修改为0,原来eax==0,则修改为4
下面就是如何patch了,怎么patch,自由发挥。

其实这就是修改VM的跳转流程的一种方法,爆破VM的程序时,也可以如此修改,如拿上个爆破的程序为例:
看下日志:

    vm.eip:4107C4      handle:40D74B      VM_Add32               vm.stack:0 //关键vm.eip:4107C5      handle:40C1EE      VM_SetR32_Reg_0        vm.stack:206vm.eip:4107C6      handle:40D37F      VM_RmSs32              vm.stack:12FF78vm.eip:4107C7      handle:40C1EE      VM_SetR32_Reg_30       vm.stack:5C059AFDvm.eip:4107C8      handle:40C1EE      VM_SetR32_Reg_2C       vm.stack:5C059AFDvm.eip:4107C9      handle:40C1EE      VM_SetR32_Reg_28       vm.stack:5C05BA25vm.eip:4107CA      handle:40D672      VM_GetR32              vm.stack:1E240vm.eip:4107CB      handle:40DA5A      VM_GetEsp              vm.stack:5C059AFDvm.eip:4107CC      handle:40D37F      VM_RmSs32              vm.stack:12FF7Cvm.eip:4107CD      handle:40C1EE      VM_SetR32_Reg_14       vm.stack:5C059AFDvm.eip:4107CE      handle:40DA5A      VM_GetEsp              vm.stack:5C059AFDvm.eip:4107CF      handle:40D37F      VM_RmSs32              vm.stack:12FF7Cvm.eip:4107D0      handle:40D125      VM_Nor32               vm.stack:5C059AFDvm.eip:4107D1      handle:40C1EE      VM_SetR32_Reg_30       vm.stack:282vm.eip:4107D2      handle:40CCF8      VM_GetI32              vm.stack:A3FA6502vm.eip:4107D7      handle:40D125      VM_Nor32               vm.stack:A3BA9816vm.eip:4107D8      handle:40C1EE      VM_SetR32_Reg_28       vm.stack:202vm.eip:4107D9      handle:40D672      VM_GetR32              vm.stack:5C0502E9vm.eip:4107DA      handle:40CCF8      VM_GetI32              vm.stack:5C059AFDvm.eip:4107DF      handle:40D125      VM_Nor32               vm.stack:5C4567E9vm.eip:4107E0      handle:40C1EE      VM_SetR32_Reg_28       vm.stack:282vm.eip:4107E1      handle:40D125      VM_Nor32               vm.stack:A3BA0002vm.eip:4107E2      handle:40C1EE      VM_SetR32_Reg_2C       vm.stack:206vm.eip:4107E3      handle:40C1EE      VM_SetR32_Reg_30       vm.stack:40FD14vm.eip:4107E4      handle:40D672      VM_GetR32              vm.stack:1E240vm.eip:4107E5      handle:40D672      VM_GetR32              vm.stack:7FFD7000vm.eip:4107E6      handle:40D672      VM_GetR32              vm.stack:206vm.eip:4107E7      handle:40D672      VM_GetR32              vm.stack:1E240vm.eip:4107E8      handle:40D672      VM_GetR32              vm.stack:12B948vm.eip:4107E9      handle:40D672      VM_GetR32              vm.stack:216vm.eip:4107EA      handle:40D672      VM_GetR32              vm.stack:408050vm.eip:4107EB      handle:40D672      VM_GetR32              vm.stack:12BA34vm.eip:4107EC      handle:40D672      VM_GetR32              vm.stack:12FFC0vm.eip:4107ED      handle:40D672      VM_GetR32              vm.stack:7FFD7000vm.eip:4107EE      handle:40D672      VM_GetR32              vm.stack:12BA34vm.eip:4107EF      handle:40CCF8      VM_GetI32              vm.stack:408050vm.eip:4107F4      handle:40D672      VM_GetR32              vm.stack:1DEBB337vm.eip:4107F5      handle:40D74B      VM_Add32               vm.stack:E2144CC9vm.eip:4107F6      handle:40C1EE      VM_SetR32_Reg_34       vm.stack:257vm.eip:4107F7      handle:40D672      VM_GetR32              vm.stack:0vm.eip:4107F8      handle:40D672      VM_GetR32              vm.stack:0vm.eip:4107F9      handle:40CE19      VM_SetEip              vm.stack:40FD14 //跳转

于是,在vm.eip:4107C4      handle:40D74B      VM_Add32               vm.stack:0 //关键

这关键的地方下好断点,当esi==4107C4时,修改eax的值即可,方法跟刚才一样,就是0跟4的互换。

http://pan.baidu.com/netdisk/singlepublic?fid=140670_203262421

2010.10.15_ximo_VMP脱壳后antidump的处理及再谈简单的爆破(带视频)相关推荐

  1. 2010.10.30 OA 项目组一周工作报告

    本周基本上实现了上周的目标,但和计划相比有落后. 进度:55 本周提交了3.0任务评估的第一个版本,一共为1003小时,客户收到该评估后,对3.0任务进行了调整,将部分任务移到2011.2版本中,同时 ...

  2. 最近的问题汇总(至2010/10/6 12:00)

    *请不要使用第三方软件"关闭服务"或者"删除垃圾文件",否则很可能会导致系统不稳定或者功能不正常! 1. 如果有系统文件损坏(少见)或者丢失(这个常见,有些&q ...

  3. mac-系统升级到MacOS Mojave 10.14.1 后 ssh 登陆不了远程主机

    使用ssh 登陆后,提示如下错误: $ ssh -i ./z_key_2010 -p 26 -v z@119.xx.xx.151 OpenSSH_7.8p1, LibreSSL 2.7.3 debug ...

  4. PE格式:手工实现各种脱壳后的修复

    手工修复导入表结构 实现手工修复导入表结构 1.首先需要找到加壳后程序的导入表以及导入了那些函数,使用PETools工具解析导入表结构,如下. 2.发现目录FOA地址为0x00000800的位置,长度 ...

  5. 手工实现各种脱壳后的修复

    手工修复导入表结构 实现手工修复导入表结构 1.首先需要找到加壳后程序的导入表以及导入了那些函数,使用PETools工具解析导入表结构,如下. 2.发现目录FOA地址为0x00000800的位置,长度 ...

  6. Windows 7常见问答汇总一【2010.10】

    1)     Q:如何修正Windows7部分磁盘分区图标显示错误? A:出现此问题有如下两种状况: 1. 除了系统所在分区外的其他分区磁盘不显示卷标. 2. 部分分区图标损坏. 可以采用方法解决: ...

  7. Windows7常见问答汇总二【2010.10】

    47)Q   : 电脑装完系统(win7),如何再进行分区. A :用windows7自带的分区工具分区 1.右键计算机-管理-存储-磁盘管理. 2.右击你要分割的磁盘C-选择"压缩卷&qu ...

  8. Windows 10 周年更新后的 Edge 14 的 HierarchyRequestError 报错

    在升级到 Windows 10 周年更新后,使用系统自带的 Edge 浏览器浏览部分网站出现这种报错: 在网络上搜索 HierarchyRequestError 会找到同样的案例,大致都指向使用 ap ...

  9. java语言显示运算时间_JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天...

    本文主要向大家介绍了JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. ACM日期 ...

最新文章

  1. LeetCode简单题之七进制数
  2. 教程:10、VI编辑器
  3. 什么是Incremental Link Table[转]
  4. jenkins调整jdk版本不生效的解决办法
  5. 标准采购订单的计算方案确定
  6. Sql Server 常用日期格式
  7. java中 == 与 equal 的区别
  8. php 数组的格式,PHP文件格式数组
  9. 大型网站技术架构:核心原理与案例分析笔记
  10. 一文入门基于三维数据的深度学习
  11. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART IV)
  12. [cdq分治][树状数组] Bzoj P3262 陌上花开
  13. Springboot thymeleaf i18n国际化多语言选择
  14. centos7 Samba服务安装和配置
  15. jQuery lightbox插件(相册全屏效果)
  16. Windows python2.7虚拟环境下的PyV8安装
  17. 单反相机tf卡用sd卡套稳定吗_存储卡可不是插上就能用 单反相机的使用细节
  18. 【Python教程】python语言风格
  19. 常见的 NoSQL 数据库有哪些?一篇详尽(图表展示)
  20. 二分查找理论(三种问题类型、两种算法形式)

热门文章

  1. php sendmail smtp,Sendmail基础配置和smtp命令学习
  2. iOS音频技术的研究-音频格式
  3. 命名实体识别 NER 论文综述:那些年,我们一起追过的却仍未知道的花名 (一)...
  4. ClassPathXmlApplicationContext 源码解析
  5. apollo源码启动服务,apollo源码分析
  6. 需不需要懂代码?——软件测试人员
  7. Android KeyLogger Demo
  8. 分区和分片的区别_MySql分表、分库、分片和分区知识点介绍
  9. PSD 格式文件除了 PS ,还能用什么软件打开?
  10. 腾讯云认证,腾讯云架构高级工程师,腾讯云高级运维工程师 考试通过