首页
社区
课程
招聘
[原创]手把手教新手破解VB程序!
发表于: 2006-12-1 19:16 18358

[原创]手把手教新手破解VB程序!

2006-12-1 19:16
18358

今天我们的任务是一个VB程序,现在大家准备好两个工具,OD和SMARTCHECK(高手曾说过并不推荐用这个)。
[1]运行程序,了解一下程序运行的大概轮廓。双击程序图标,可以看到如下界面:

分析:程序的“check”按钮灰化了,必须想办法激活,否则我们以后分析程序的时候会遇到麻烦。
攻略:首先用EXESCOPE分析一下,没发现对话框资源,说明“check”按钮不是对话框上的按钮。
[2]用SMARTCHECK分析程序运行的大概流程。随便点几个数字“1”,“3”,然后停止,退出程序。

分析:此时可以看到编辑框内每获得一个字符,就发生Command7.Enabled的改变,也就是说程序会通过判断编辑框内的字符来决定是否让“check”按钮激活。
攻略:于是我们来到该事件发生时所处的偏移:00003AAD。OD载入,CTRL+G转到403AAD(偏移+基地址):

显然PUSH EBX是入栈的不是0就是1,这里我们把它改成PUSH 1(也就是无论编辑框内是什么字符,“check”按钮都会激活)
注意:由于PUSH 1比PUSH EBX多一个字节的机器指令,因此我们不能在原地方直接修改,需要JMP到空地方修改指令,然后再JMP回来。
[3]再用SMARTCHECK分析修改后的程序。SMARTCHECK载入后,随便点几个数字,再点“check”按钮(此时已经可以点了),然后停止,退出程序。

攻略:找到发生MsgBox事件时的偏移:00003660。OD载入,CTRL+G转到403660(偏移+基地址):,往上找,我们发现关键跳(00403568   .  0F84 AE000000 JE lolcrack.0040361C                     ;  关键跳):
00403531   .  52            PUSH EDX
00403532   .  68 281E4000   PUSH lolcrack.00401E28
00403537   .  FF15 5C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp
0040353D   .  8BF8          MOV EDI,EAX
0040353F   .  8D4D E8       LEA ECX,DWORD PTR SS:[EBP-18]
00403542   .  F7DF          NEG EDI
00403544   .  1BFF          SBB EDI,EDI
00403546   .  47            INC EDI
00403547   .  F7DF          NEG EDI
00403549   .  FF15 DC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr
0040354F   .  B9 04000280   MOV ECX,80020004
00403554   .  B8 0A000000   MOV EAX,0A
00403559   .  66:3BFB       CMP DI,BX
0040355C   .  894D AC       MOV DWORD PTR SS:[EBP-54],ECX
0040355F   .  8945 A4       MOV DWORD PTR SS:[EBP-5C],EAX
00403562   .  894D BC       MOV DWORD PTR SS:[EBP-44],ECX
00403565   .  8945 B4       MOV DWORD PTR SS:[EBP-4C],EAX
00403568   .  0F84 AE000000 JE lolcrack.0040361C                     ;  关键跳
0040356E   .  8B3D B4104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaVa>;  MSVBVM60.__vbaVarDup
00403574   .  8D55 84       LEA EDX,DWORD PTR SS:[EBP-7C]
00403577   .  8D4D C4       LEA ECX,DWORD PTR SS:[EBP-3C]
0040357A   .  C745 8C 501E4>MOV DWORD PTR SS:[EBP-74],lolcrack.00401>;  UNICODE "We Have a Winner"
00403581   .  C745 84 08000>MOV DWORD PTR SS:[EBP-7C],8
00403588   .  FFD7          CALL EDI                                 ;  <&MSVBVM60.__vbaVarDup>
0040358A   .  8D55 94       LEA EDX,DWORD PTR SS:[EBP-6C]
0040358D   .  8D4D D4       LEA ECX,DWORD PTR SS:[EBP-2C]
00403590   .  C745 9C 341E4>MOV DWORD PTR SS:[EBP-64],lolcrack.00401>;  UNICODE "Correct :)"
00403597   .  C745 94 08000>MOV DWORD PTR SS:[EBP-6C],8
0040359E   .  FFD7          CALL EDI
004035A0   .  8D45 A4       LEA EAX,DWORD PTR SS:[EBP-5C]
004035A3   .  8D4D B4       LEA ECX,DWORD PTR SS:[EBP-4C]
004035A6   .  50            PUSH EAX
004035A7   .  8D55 C4       LEA EDX,DWORD PTR SS:[EBP-3C]
004035AA   .  51            PUSH ECX
004035AB   .  52            PUSH EDX
004035AC   .  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
004035AF   .  53            PUSH EBX
004035B0   .  50            PUSH EAX
004035B1   .  FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>]     ;  MSVBVM60.rtcMsgBox
004035B7   .  8D4D A4       LEA ECX,DWORD PTR SS:[EBP-5C]
004035BA   .  8D55 B4       LEA EDX,DWORD PTR SS:[EBP-4C]
004035BD   .  51            PUSH ECX
004035BE   .  8D45 C4       LEA EAX,DWORD PTR SS:[EBP-3C]
004035C1   .  52            PUSH EDX
004035C2   .  8D4D D4       LEA ECX,DWORD PTR SS:[EBP-2C]
004035C5   .  50            PUSH EAX
004035C6   .  51            PUSH ECX
004035C7   .  6A 04         PUSH 4
004035C9   .  FF15 18104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVarList
004035CF   .  8B16          MOV EDX,DWORD PTR DS:[ESI]
004035D1   .  83C4 14       ADD ESP,14
004035D4   .  56            PUSH ESI
004035D5   .  FF92 14030000 CALL DWORD PTR DS:[EDX+314]
004035DB   .  50            PUSH EAX
004035DC   .  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
004035DF   .  50            PUSH EAX
004035E0   .  FF15 38104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>;  MSVBVM60.__vbaObjSet
004035E6   .  8BF0          MOV ESI,EAX
004035E8   .  68 781E4000   PUSH lolcrack.00401E78                   ;  UNICODE "Congratulations!"
004035ED   .  56            PUSH ESI
004035EE   .  8B0E          MOV ECX,DWORD PTR DS:[ESI]
004035F0   .  FF91 A4000000 CALL DWORD PTR DS:[ECX+A4]
004035F6   .  3BC3          CMP EAX,EBX
004035F8   .  DBE2          FCLEX
004035FA   .  7D 12         JGE SHORT lolcrack.0040360E
004035FC   .  68 A4000000   PUSH 0A4
00403601   .  68 BC1D4000   PUSH lolcrack.00401DBC
00403606   .  56            PUSH ESI
00403607   .  50            PUSH EAX
00403608   .  FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
0040360E   >  8D4D E4       LEA ECX,DWORD PTR SS:[EBP-1C]
00403611   .  FF15 E0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj
00403617   .  E9 88000000   JMP lolcrack.004036A4
0040361C   >  8B3D B4104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaVa>;  MSVBVM60.__vbaVarDup
00403622   .  8D55 84       LEA EDX,DWORD PTR SS:[EBP-7C]
00403625   .  8D4D C4       LEA ECX,DWORD PTR SS:[EBP-3C]
00403628   .  C745 8C C01E4>MOV DWORD PTR SS:[EBP-74],lolcrack.00401>;  UNICODE "Unsuccessful"
0040362F   .  C745 84 08000>MOV DWORD PTR SS:[EBP-7C],8
00403636   .  FFD7          CALL EDI                                 ;  <&MSVBVM60.__vbaVarDup>
00403638   .  8D55 94       LEA EDX,DWORD PTR SS:[EBP-6C]
0040363B   .  8D4D D4       LEA ECX,DWORD PTR SS:[EBP-2C]
0040363E   .  C745 9C A01E4>MOV DWORD PTR SS:[EBP-64],lolcrack.00401>;  UNICODE "Incorrect :("
00403645   .  C745 94 08000>MOV DWORD PTR SS:[EBP-6C],8
0040364C   .  FFD7          CALL EDI
0040364E   .  8D55 A4       LEA EDX,DWORD PTR SS:[EBP-5C]
00403651   .  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
00403654   .  52            PUSH EDX
00403655   .  8D4D C4       LEA ECX,DWORD PTR SS:[EBP-3C]
00403658   .  50            PUSH EAX
00403659   .  51            PUSH ECX
0040365A   .  8D55 D4       LEA EDX,DWORD PTR SS:[EBP-2C]
0040365D   .  53            PUSH EBX
0040365E   .  52            PUSH EDX
0040365F   .  FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>]     ;  MSVBVM60.rtcMsgBox
经分析知道,当EDX内存的字符与00401E28内存的字符相等则跳向成功!,所以我们接下来的任务就是要分析EDX和00401E28内存的内容是什么?经过分析,我们得知EDX内存的内容是程序编辑框里的内容,而00401E28内存的内容固定是00401E28  2A 00 1E 00 5C 00 00 00(注意:该程序的字节是UNICODE双字节形式),因此只要我们编辑框的内容是2A1E5C就破解成功了!我们试试:分别点按钮“211553”,成功!
今天到这里,就到这里!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主了

讲的真不错,学习…………
2006-12-1 19:47
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
GOOD 值得收藏 拿回去慢慢研究
2006-12-1 19:52
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
好,支持一下
2006-12-1 21:56
0
雪    币: 224
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
确实不错拿回去学习
2006-12-3 22:50
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
用楼主的方法成功破解了一个文件.支持!!!!!
2006-12-5 23:59
0
雪    币: 220
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这是最最基本的了,楼上的+U
2006-12-6 11:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢楼主!
学习中...
2006-12-7 14:44
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
9
学习下先再说~~
2006-12-7 14:52
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10


加油!加油!
2006-12-7 15:38
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
用 VBExplorer 也可以即或那按钮
2007-3-19 14:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不错..对新手来说是个不错的题材
2007-3-20 12:00
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
为什么我用smartcheck6.20运行楼主的程序时,那个_click事件前没有指明控件名称(楼主的是Command1_click,而我的就是_click),而且在那个_change事件后,只有 Len returns LONG:1这一行,而没有楼主截图中的Button7.Enable <- false这行?
2007-3-21 21:04
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 iamcrackin 发布
今天我们的任务是一个VB程序,现在大家准备好两个工具,OD和SMARTCHECK(高手曾说过并不推荐用这个)。
[1]运行程序,了解一下程序运行的大概轮廓。双击程序图标,可以看到如下界面:

分析:程序的“check”按钮灰化了,必须想办法激活,否则我们以后分析程序的时候会遇到麻烦。
攻略:首先用EXESCOPE分析一下,没发现对话框资源,说明“check”按钮不是对话框上的按钮。
........


问题
攻略:于是我们来到该事件发生时所处的偏移:00003AAD
这个偏移地址在SM中如何找到?
我看不到任何的便宜地址啊
2007-3-22 09:41
0
雪    币: 227
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
和楼上一样的,我也一直没找到地址,要怎么看地址哦?
2007-3-23 23:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 suddymail 发布
和楼上一样的,我也一直没找到地址,要怎么看地址哦?

所以说这个文章写得极差。。。最后还是自己用自己的办法搞定了。。。。
2007-3-24 17:05
0
雪    币: 189
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
手把手教新手破解VB
2007-3-24 23:18
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
2011-8-8 22:50
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好东西 马克下
2011-8-9 20:24
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
从简单学起 支持LZ
2011-8-11 16:48
0
游客
登录 | 注册 方可回帖
返回
//