首页
社区
课程
招聘
[讨论]我破解的一个VB程序
2007-4-10 22:45 6017

[讨论]我破解的一个VB程序

2007-4-10 22:45
6017
我在破解一个VB程序,是输入用户名和密码,好像用户名和密码之间有什么规律才可以,目的就是要找出用户名和密码.我找到了一段关键代码不过在第一个.__vbaVarTstNe就通不过了,我找了好久没找出规律来,希望大家一起来帮我看一下

http://mhxueshan.512j.com/ModCopyS.exe

00402BC9   .  50            PUSH EAX
00402BCA   .  FF15 28104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
00402BD0   >  8B85 5CFFFFFF MOV EAX,DWORD PTR SS:[EBP-A4]  //获得username
00402BD6   .  89BD 5CFFFFFF MOV DWORD PTR SS:[EBP-A4],EDI
00402BDC   .  8985 50FFFFFF MOV DWORD PTR SS:[EBP-B0],EAX
00402BE2   .  C785 48FFFFFF>MOV DWORD PTR SS:[EBP-B8],8
00402BEC   .  8D95 48FFFFFF LEA EDX,DWORD PTR SS:[EBP-B8]
00402BF2   .  8D8D 70FFFFFF LEA ECX,DWORD PTR SS:[EBP-90]
00402BF8   .  8B35 0C104000 MOV ESI,DWORD PTR DS:[<&MSVBVM60.__vbaVa>;  MSVBVM60.__vbaVarMove
00402BFE   .  FFD6          CALL ESI                                 ;  <&MSVBVM60.__vbaVarMove>
00402C00   .  8D8D 58FFFFFF LEA ECX,DWORD PTR SS:[EBP-A8]
00402C06   .  FF15 E4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj
00402C0C   .  C745 FC 04000>MOV DWORD PTR SS:[EBP-4],4
00402C13   .  8B03          MOV EAX,DWORD PTR DS:[EBX]
00402C15   .  53            PUSH EBX
00402C16   .  FF90 FC020000 CALL DWORD PTR DS:[EAX+2FC]
00402C1C   .  50            PUSH EAX
00402C1D   .  8D8D 58FFFFFF LEA ECX,DWORD PTR SS:[EBP-A8]
00402C23   .  51            PUSH ECX
00402C24   .  FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>;  MSVBVM60.__vbaObjSet
00402C2A   .  8985 94FEFFFF MOV DWORD PTR SS:[EBP-16C],EAX
00402C30   .  8B10          MOV EDX,DWORD PTR DS:[EAX]
00402C32   .  8D8D 5CFFFFFF LEA ECX,DWORD PTR SS:[EBP-A4]
00402C38   .  51            PUSH ECX
00402C39   .  50            PUSH EAX
00402C3A   .  FF92 A0000000 CALL DWORD PTR DS:[EDX+A0]
00402C40   .  DBE2          FCLEX
00402C42   .  3BC7          CMP EAX,EDI
00402C44   .  7D 18         JGE SHORT ModCopyS.00402C5E
00402C46   .  68 A0000000   PUSH 0A0
00402C4B   .  68 A0224000   PUSH ModCopyS.004022A0
00402C50   .  8B95 94FEFFFF MOV EDX,DWORD PTR SS:[EBP-16C]
00402C56   .  52            PUSH EDX
00402C57   .  50            PUSH EAX
00402C58   .  FF15 28104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
00402C5E   >  8B85 5CFFFFFF MOV EAX,DWORD PTR SS:[EBP-A4]  //获得Password
00402C64   .  89BD 5CFFFFFF MOV DWORD PTR SS:[EBP-A4],EDI
00402C6A   .  8985 50FFFFFF MOV DWORD PTR SS:[EBP-B0],EAX
00402C70   .  C785 48FFFFFF>MOV DWORD PTR SS:[EBP-B8],8
00402C7A   .  8D95 48FFFFFF LEA EDX,DWORD PTR SS:[EBP-B8]
00402C80   .  8D4D C0       LEA ECX,DWORD PTR SS:[EBP-40]
00402C83   .  FFD6          CALL ESI
00402C85   .  8D8D 58FFFFFF LEA ECX,DWORD PTR SS:[EBP-A8]
00402C8B   .  FF15 E4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj
00402C91   .  C745 FC 05000>MOV DWORD PTR SS:[EBP-4],5
00402C98   .  89BD E0FEFFFF MOV DWORD PTR SS:[EBP-120],EDI
00402C9E   .  B8 02800000   MOV EAX,8002
00402CA3   .  8985 D8FEFFFF MOV DWORD PTR SS:[EBP-128],EAX
00402CA9   .  89BD D0FEFFFF MOV DWORD PTR SS:[EBP-130],EDI
00402CAF   .  8985 C8FEFFFF MOV DWORD PTR SS:[EBP-138],EAX
00402CB5   .  8D85 70FFFFFF LEA EAX,DWORD PTR SS:[EBP-90]
00402CBB   .  50            PUSH EAX
00402CBC   .  8D8D 48FFFFFF LEA ECX,DWORD PTR SS:[EBP-B8]
00402CC2   .  51            PUSH ECX
00402CC3   .  FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenVa>;  MSVBVM60.__vbaLenVar//len of username
00402CC9   .  50            PUSH EAX   
00402CCA   .  8D95 D8FEFFFF LEA EDX,DWORD PTR SS:[EBP-128]
00402CD0   .  52            PUSH EDX
00402CD1   .  8D85 38FFFFFF LEA EAX,DWORD PTR SS:[EBP-C8]
00402CD7   .  50            PUSH EAX
00402CD8   .  FF15 BC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCm>;  MSVBVM60.__vbaVarCmpEq //字符串比较函数类似
00402CDE   .  50            PUSH EAX
00402CDF   .  8D4D C0       LEA ECX,DWORD PTR SS:[EBP-40]
00402CE2   .  51            PUSH ECX
00402CE3   .  8D95 28FFFFFF LEA EDX,DWORD PTR SS:[EBP-D8]
00402CE9   .  52            PUSH EDX
00402CEA   .  FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenVa>;  MSVBVM60.__vbaLenVar
00402CF0   .  50            PUSH EAX
00402CF1   .  8D85 C8FEFFFF LEA EAX,DWORD PTR SS:[EBP-138]
00402CF7   .  50            PUSH EAX
00402CF8   .  8D8D 18FFFFFF LEA ECX,DWORD PTR SS:[EBP-E8]
00402CFE   .  51            PUSH ECX
00402CFF   .  FF15 BC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCm>;  MSVBVM60.__vbaVarCmpEq
00402D05   .  50            PUSH EAX
00402D06   .  8D95 08FFFFFF LEA EDX,DWORD PTR SS:[EBP-F8]
00402D0C   .  52            PUSH EDX
00402D0D   .  FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarOr>;  MSVBVM60.__vbaVarOr
00402D13   .  50            PUSH EAX
00402D14   .  FF15 50104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaBoolV>;  MSVBVM60.__vbaBoolVarNull
00402D1A   .  66:85C0       TEST AX,AX
00402D1D      74 26         JE SHORT ModCopyS.00402D45
00402D1F   .  C745 FC 06000>MOV DWORD PTR SS:[EBP-4],6
00402D26   .  8B03          MOV EAX,DWORD PTR DS:[EBX]
00402D28   .  53            PUSH EBX
00402D29   .  FF90 F8060000 CALL DWORD PTR DS:[EAX+6F8]
00402D2F   .  3BC7          CMP EAX,EDI
00402D31   .  7D 12         JGE SHORT ModCopyS.00402D45
00402D33   .  68 F8060000   PUSH 6F8
00402D38   .  68 74214000   PUSH ModCopyS.00402174
00402D3D   .  53            PUSH EBX
00402D3E   .  50            PUSH EAX
00402D3F   .  FF15 28104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
00402D45   >  C745 FC 07000>MOV DWORD PTR SS:[EBP-4],7
00402D4C   .  C785 E0FEFFFF>MOV DWORD PTR SS:[EBP-120],6
00402D56   .  C785 D8FEFFFF>MOV DWORD PTR SS:[EBP-128],8002
00402D60   .  8D8D 70FFFFFF LEA ECX,DWORD PTR SS:[EBP-90]
00402D66   .  51            PUSH ECX
00402D67   .  8D95 48FFFFFF LEA EDX,DWORD PTR SS:[EBP-B8]
00402D6D   .  52            PUSH EDX
00402D6E   .  FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenVa>;  MSVBVM60.__vbaLenVar
00402D74   .  50            PUSH EAX
00402D75   .  8D85 D8FEFFFF LEA EAX,DWORD PTR SS:[EBP-128]
00402D7B   .  50            PUSH EAX
00402D7C   .  FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTs>;  MSVBVM60.__vbaVarTstNe//0x8002 和 地址0012f558里面的数 比较
00402D82   .  66:85C0       TEST AX,AX
00402D85      74 26         JE SHORT ModCopyS.00402DAD

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 0
打赏
分享
最新回复 (4)
雪    币: 237
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
luckyxsky 1 2007-4-11 18:30
2
0
用OD调试VB够痛苦的,我也稀里糊涂的,幸好我们有SmartCHK(还是汉化版滴)。
调试发现它先比较用户名是否为Stuart,然后才会运行比较密码的代码,是明码比较472716574735。
供参考。
雪    币: 177
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mhxueshan 2007-4-12 00:29
3
0
答案确实是这么多,我也用Smart6.2(中文版没装成功)调试过的,不过没有给出什么信息来,我是头几次破VB程序,你能给出一下详细分析过程吗?多谢了
雪    币: 237
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
luckyxsky 1 2007-4-12 08:50
4
0
哈哈,头一次有人和我探讨问题哦。
我也是用的SmartCheck6.2汉化版,在看雪2007大礼包里面有的,我安装正常,汉化时覆盖几个文件就OK了。
多说一句,SmartCheck要按照学院的教程设置一下先,详见 http://www.pediy.com/tutorial/chap7/Chap7-3.htm
下面开工
1、载入ModCopyS Username:killer  Password:38383838 然后Validate,出现错误提示,此时终止调试(因为后面无所谓了)
2、在SmartCheck的Events窗口,展开_Click,观察MsgBox(就是刚才的出错对话框)前面的东东,发现做了两件事情:
     逆序找我的用户名的每个字母
     连续6个Str的东东,查看一下ASCII码,得知是t r a u t S
3、选中MsgBox后,单击SmartCheck的按钮,显示所有事件。向上找发现 __vbaVarTstNe,结果是FFFFFFFF,即两者比较不等。
4、猜想是拿用户名和Stuart做的比较,如果不相等,后面的Password压根不会比较
5、重新调试,填写用户名为Stuart,后面的密码就是明码比较了。 OVER
雪    币: 177
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mhxueshan 2007-4-12 15:28
5
0
   多谢指点,按照你说的方法确实看到了用户名和密码,不过前面有一个验证用户名长度的过程感觉很不明显,用户名长度为6才会比较,否则用户名也不会比较,这里我没有找出来,不过只要确定用户名长度为6了,后面就很好做了.我已经把中文版的装好了
   这是一个外国黑客游戏的第四关,后面还有第五关也是破解题(Borland Delphi 6.0 - 7.0),如果有兴趣的话,我把程序贴上来
游客
登录 | 注册 方可回帖
返回