首页
社区
课程
招聘
[原创]《word 文档批量处理大师爆破》爆破
发表于: 2012-4-24 21:47 8152

[原创]《word 文档批量处理大师爆破》爆破

2012-4-24 21:47
8152
标 题: 【原创】《word 文档批量处理大师爆破》爆破
作 者: zhxfl
时 间: 2012-04-24
链 接: http://bbs.pediy.com/showthread.php?p=1066964
附 件: word文档批量处理大师.rar
说 明:这个是“小生怕怕”里面的一个小软件,发现小生弄错好几个地方,所以自己试了一下,做出了完整的破解,发在这里供新手练手。本主题只供研究只用。

VB的程序,下比较断点bpx __vbaStrCmp(在cmd框执行)
一边撤销断点(f2)一边执行,直到运行到这里
0061E341     /75 11         jnz Xword文档.0061E354
0061E343   . |C745 FC 83000>mov dword ptr ss:[ebp-0x4],0x83
0061E34A   . |E8 91120000   call word文档.0061F5E0
0061E34F   . |E9 20010000   jmp word文档.0061E474
0061E354   > \C745 FC 85000>mov dword ptr ss:[ebp-0x4],0x85


这里有一个call word文档,凡是跳过这种call(这个call的内容是本代码模块的,而不是其他模块的函数)的,这个call必须跟进进去看看,进去之后,只看注释(关注是否有任何比较字符串的函数或者某些很长的字符串存在)如:

按<C>按钮,回到这里,把jnz语句nop掉,进入call分析

0061E341      90            nop
0061E342      90            nop
0061E343   .  C745 FC 83000>mov dword ptr ss:[ebp-0x4],0x83
0061E34A   .  E8 91120000   call word文档.0061F5E0
0061E34F   .  E9 20010000   jmp word文档.0061E474


这里有一个跳转,跨度很大,而且包好字符串比较,所以直接nop掉

0061F64A      90            nop
0061F64B      90            nop
0061F64C      90            nop
0061F64D      90            nop
0061F64E      90            nop
0061F64F      90            nop
0061F650   .  8B0D 44C06300 mov ecx,dword ptr ds:[0x63C044]
0061F656   .  51            push ecx                             ; /String => ""
0061F657   .  FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaL>; \__vbaLenBstr
0061F65D   .  0FBFD6        movsx edx,si
0061F660   .  2BC2          sub eax,edx
0061F662   .  8B15 44C06300 mov edx,dword ptr ds:[0x63C044]
0061F668   .  0F80 D5020000 jo word文档.0061F943

一直跟到这里

0061F8B2   .  FF15 68114000 call dword ptr ds:[<&MSVBVM60.__vbaS>;  MSVBVM60.__vbaStrCmp
这时候堆栈里面是这样的(跟踪的时候要一直看着堆栈里面的信息),这个是MD5校验,因为代码被改了,所以就不相等。

0012FB74   0016880C  UNICODE "76EE701A9534D90A220D8A76C69DFF67"
0012FB78   0016894C  UNICODE "CFCD208495D565EF66E7DFF9F98764DA"

所以nop掉这里的跳转,使得MD5校验失败

0061F8BA      90            nop
0061F8BB      90            nop
0061F8BC      8B15 44C06300 mov edx,dword ptr ds:[0x63C044]
0061F8C2      66:C705 48C06>mov word ptr ds:[0x63C048],0xFFFF

接着就可以跑出这个函数了。继续不断F9,一边F2撤销断点,知道出现如下对话框,可以看到成功注册了,不过仍然有功能限制。

这里又经过刚才那个函数,nop掉,直接进入

005EBBB5   .  FF15 68114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp
005EBBBB   .  F7D8          neg eax
005EBBBD   .  1BC0          sbb eax,eax
005EBBBF   .  40            inc eax
005EBBC0   .  0BF0          or esi,eax
005EBBC2   .  85F6          test esi,esi
005EBBC4      90            nop
005EBBC5      90            nop
005EBBC6   .  C745 FC 7F000>mov dword ptr ss:[ebp-0x4],0x7F
005EBBCD   .  E8 0E3A0300   call word文档.0061F5E0
005EBBD2   .  EB 10         jmp Xword文档.005EBBE4
005EBBD4   >  C745 FC 81000>mov dword ptr ss:[ebp-0x4],0x81
005EBBDB   .  66:C705 48C06>mov word ptr ds:[0x63C048],0x0
005EBBE4   >  C745 FC 83000>mov dword ptr ss:[ebp-0x4],0x83


点击软件的个个按钮,检查是否有功能限制。很快可以发现仍然有功能限制,这时候可以尝试搜索字符串“本功能只提供个注册用户使用”,这里使用unicode搜索引擎,很快可以发现这个字符串。


进入该代码附近,往上找跳转指令(然后对这些跳转下断点),如下这个指令,下端之后重新触发这个功能限制。

005EA122     /0F84 52010000 je word文档.005EA27A
005EA128     |66:395E 3A    cmp word ptr ds:[esi+0x3A],bx
005EA12C   . |0F85 48010000 jnz word文档.005EA27A


重新触发之后发现确实没有跳转,所以就强迫他跳转,修改如下:

005EA122     /E9 53010000   jmp word文档.005EA27A
005EA127     |90            nop
005EA128     |66:395E 3A    cmp word ptr ds:[esi+0x3A],bx
005EA12C   . |0F85 48010000 jnz word文档.005EA27A


到这里为止,爆破似乎结束了,我把修改都保存起来<word文档批量处理大师-1.exe>,
这里发现其不能运行,只好重新载入<word文档批量处理大师-1.exe>观察,老规矩,下bpx __vbaStrCmp 断点 。

0061FE11   .  FF15 68114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp
0061FE17   .  85C0          test eax,eax
0061FE19   .  74 06         je Xword文档.0061FE21
0061FE1B      FF15 4C104000 call dword ptr ds:[<&MSVBVM60.__vbaEnd>] ;  MSVBVM60.__vbaEnd


这里发现__vbaEnd被运行了,这个函数可以结束按钮功能或者窗口,可以猜想,这个程序还有其他的MD5校验,这里我直接把__vbaEnd nop掉,然后继续F9(同时检查每个按钮),发现不少地方有这种情况,处理完之后,保存为<word文档批量处理大师-2.exe>,把他的校验功能也去除了,完整的破解到这里就结束了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 289
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主很强大,菜鸟的我完全没有看懂,先顶顶再学习
2012-4-24 22:26
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看来需要学一学OD啊
2012-9-3 19:41
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
虽然没学懂OD,但是用winhex参照楼主的文件,适当修改了一下7.36.
好像也可以用。
2012-9-4 10:33
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
再次看见vb的MSVBVM60.__vbaStrCmp
2012-9-4 10:59
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你那里调了最新的7.3.6了吗,
我这里新版的好像MD5解决不得。
2012-9-4 16:13
0
游客
登录 | 注册 方可回帖
返回
//