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. SCOM2012R2 (5) MONITOR WINDOWS OF WORKGROUP
  2. leetcode算法题--等差数列划分
  3. 服务程序增加系统托盘
  4. pymysql 模块 使用目录
  5. 一般处理程序制作的验证码
  6. 在深度学习顶会ICLR 2020上,Transformer模型有什么新进展?
  7. 修改程序的形而上学思考(随笔)
  8. 基于DenseNet和自注意机制融合的脐橙病虫害鉴定(DenseNet加入注意力+自然数据集扩大)
  9. 如何去掉显卡的桌面右键菜单:
  10. 管理与决策这属于计算机在什么方面的应用,闽高校计算机一级考试选择题题库...
  11. linux系统资源信息监控
  12. 计算机硬件技术基础教程mcs-51单片机原理及应用,mcs51单片机原理及应用
  13. java创建http接口
  14. 按键精灵UI界面的实例代码以及调用
  15. 企业为提高团队协作,一般都会使用什么办公工具?
  16. 【数据结构】【cfs_rq】【task_struct】【sched_domain】
  17. Sqoop导入导出基本操作
  18. 合并两个列表zip()函数
  19. Dapper大规模分布式系统问题跟踪系统
  20. 网站权重是什么意思?

热门文章

  1. 王石专访:哈佛这一年,我获得新生
  2. Android下音标字体的相关问题
  3. 史上最全数据库优化方案,没有之一
  4. php影视网站主页不显示列表,七星修改米酷影视6.2.8完整版–PHP7.0及以上,修复页面不显示和不能播放等...
  5. 易中天品三国--要点记录
  6. 理光Ricoh Aficio MP 2014 一体机驱动
  7. 推出应用加速器 伟库网为用户应用体验上保险 (转载)
  8. 新疆和田计算机考试成绩查询,2019新疆和田公务员笔试成绩查询入口_合格分数线...
  9. 地平线发布高性能大算力整车智能计算平台战略;环旭电子越南厂近日正式投产;三安集成滤波器首获平台认证 | 全球TMT...
  10. 条条就要离开上海去南通工作了