-
-
[原创]《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>,把他的校验功能也去除了,完整的破解到这里就结束了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!