首页
社区
课程
招聘
[已解]没壳了,VB的 老在里面跳,找不到密码,崩溃
发表于: 2009-2-9 15:43 7264

[已解]没壳了,VB的 老在里面跳,找不到密码,崩溃

2009-2-9 15:43
7264
首先祝所有 看雪 友友们 元宵佳节快乐!

看上去应该很简单了啊。但是在里面跳个没完,定位了 rtcmsgbox  成功了 但就是找不到在哪计算的密码。。。

-----------------------------------
这个crack 到此为止,换别的练手了,谢谢各位 特别是版主  书呆彭!

这个没用的附件好像随便删有罪。。。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
老在VBVM60里面跳?应该是P-CODE的。
2009-2-9 16:07
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
斑竹来了。可惜我那个帖子自己已经重新编辑删除内容了。
2009-2-9 16:52
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
P-CODE是的 我已经拿别的查到了字符串,因为VB不是 ASC2码  帮我弄下,我就是找不到计算输入的密码拿段

斑斑来了 好啊
2009-2-9 17:45
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
刚看了一下,不是P-CODE,是本机代码。

VB的东西用VB Decompiler来处理,可以看到接近源码的东西,剩下分析就方便多了。

按钮事件函数是402470,需要动态分析的直接在这里下断点即可。

贴上VB Decompiler的结果,参考之。

Private Sub CmdLoad_Click() '402470
  loc_00402495: var_10 = &H401148
  loc_00402529: call MSVBVM60.DLL.__vbaAryConstruct2(var_34, 00401D60h, 00000003h, arg_8, esi, ebx)
  loc_00402531: call On Error ...(00000001h)
  loc_00402576: call MSVBVM60.DLL.__vbaR8Str(Text1.Text, "", arg_8, arg_8)
  loc_0040257C: call MSVBVM60.DLL.__vbaFPInt
  loc_00402582: call MSVBVM60.DLL.__vbaFpR8
  loc_00402588: fcomp real8 ptr [00401170h] ; 
  loc_0040258E: fstsw ax
                If MSVBVM60.DLL.__vbaFpR8 <> 0 Then
  loc_0040259A:   GoTo loc_0040259E
                End If
  loc_0040259E: 'Referenced from 0040259A
  loc_0040259E: neg eax
                If ax <> esi Then
  loc_004025BF:   var_8C = 80020004h
  loc_004025CA:   var_94 = 10
  loc_004025D0:   var_7C = 80020004h
  loc_004025D3:   var_84 = 10
  loc_004025D9:   var_6C = 80020004h
  loc_004025DC:   var_74 = 10
  loc_004025DF:   var_9C = "WRONG"
  loc_004025E9:   var_A4 = 8
  loc_004025FC:   var_64 = 10
  loc_00402615:   GoTo loc_00402CAB
                End If
  loc_0040261A: var_9C = 1
  loc_0040262F: var_AC = &H14
  loc_0040263F: var_BC = 1
                For var_48 = 1 To &H14 Step 1
                  If "" <> esi Then
  loc_00402684:     var_48 = @CLng("")
                    If var_48 >= 101 Then
  loc_00402691:       call MSVBVM60.DLL.__vbaGenerateBoundsError("", 2, 2, 2, var_74, ""4, var_94, var_94, var_94)
                    End If
                  Next var_48
  loc_004026BE:   GoTo loc_0040267C
                End If
  loc_004026C0: var_9C = 1
  loc_004026CA: var_A4 = 2
  loc_004026D0: var_AC = &H13
                For var_48 = "" To &H13 Step 1
  loc_0040271B:   var_9C = 1
  loc_00402725:   var_A4 = 2
                  If "" <> esi Then
  loc_00402746:     var_64 = var_48 & var_A4
                    If @CLng("") >= 101 Then
  loc_00402758:       call MSVBVM60.DLL.__vbaGenerateBoundsError("", 2, 2, var_A4, "", "", "", "", "")
                    End If
  loc_0040275E:     var_AC = 1
  loc_00402781:     var_74 = var_48 & 2
  loc_00402784:     var_74 = @CLng(%x2)
                    If var_74 >= 101 Then
  loc_0040278D:       call MSVBVM60.DLL.__vbaGenerateBoundsError
                    End If
  loc_00402797:     var_48 = @CLng(%x2)
                    If var_48 >= 101 Then
  loc_004027A0:       call MSVBVM60.DLL.__vbaGenerateBoundsError
                    End If
  loc_004027A9:     fild dword ptr [eax]
  loc_004027AB:     fstp real8 ptr var_190
  loc_004027B1:     fild dword ptr [eax+edi*4]
  loc_004027B4:     fstp real8 ptr var_198
  loc_004027BA:     fld real8 ptr var_190
                    If var_405000 = 0 Then
  loc_004027C9:       fdiv real8 ptr var_198
  loc_004027CF:       GoTo loc_004027E2
                    End If
  loc_004027DD:     call MSVBVM60.DLL._adj_fdiv_m64(var_198, var_194)
  loc_004027E2:     'Referenced from 004027CF
  loc_004027E2:     fstsw ax
                    If MSVBVM60.DLL._adj_fdiv_m64(var_198, var_194) = 0 Then
  loc_004027EC:       call MSVBVM60.DLL.__vbaFpI4
                    Next var_48
  loc_00402832:     GoTo loc_00402719
                  End If
  loc_00402837:   var_AC = &H28
  loc_00402841:   var_B4 = 2
  loc_00402847:   var_BC = &H14
  loc_00402851:   var_C4 = 2
                  For var_48 = &H14 To &H28 Step 1
                    If var_48 <> esi Then
  loc_0040288C:       var_9C = &H14
  loc_00402896:       var_A4 = 2
  loc_004028B1:       call MSVBVM60.DLL.__vbaVarSub("", var_A4, var_48, "", ""8, var_C4, var_B4, var_A4, "")
  loc_004028BA:       MSVBVM60.DLL.__vbaVarSub("", var_A4, var_48, "", ""8, var_C4, var_B4, var_A4, "") = @CLng(%x2)
  loc_004028BC:       var_E0 = MSVBVM60.DLL.__vbaVarSub("", var_A4, var_48, "", ""8, var_C4, var_B4, var_A4, "")
                      If MSVBVM60.DLL.__vbaVarSub("", var_A4, var_48, "", ""8, var_C4, var_B4, var_A4, "") >= 101 Then
  loc_004028C7:         call MSVBVM60.DLL.__vbaGenerateBoundsError
                      End If
  loc_004028CD:       var_AC = &H13
  loc_004028D7:       var_B4 = 2
  loc_004028F0:       call MSVBVM60.DLL.__vbaVarSub(var_74, var_B4, var_48)
  loc_004028F3:       MSVBVM60.DLL.__vbaVarSub(var_74, var_B4, var_48) = @CLng(%x2)
                      If MSVBVM60.DLL.__vbaVarSub(var_74, var_B4, var_48) >= 101 Then
  loc_004028FC:         call MSVBVM60.DLL.__vbaGenerateBoundsError
                      End If
  loc_00402907:       var_BC = 2
  loc_0040290D:       var_C4 = 2
  loc_00402925:       call MSVBVM60.DLL.__vbaVarSub(""4, var_C4, var_48)
  loc_00402928:       MSVBVM60.DLL.__vbaVarSub(""4, var_C4, var_48) = @CLng(%x2)
                      If MSVBVM60.DLL.__vbaVarSub(""4, var_C4, var_48) >= 101 Then
  loc_00402931:         call MSVBVM60.DLL.__vbaGenerateBoundsError
                      End If
  loc_0040293B:       var_48 = @CLng(%x2)
                      If var_48 >= 101 Then
  loc_00402944:         call MSVBVM60.DLL.__vbaGenerateBoundsError
                      End If
  loc_00402953:       fild dword ptr [eax+edx*4]
  loc_00402956:       fstp real8 ptr var_1A0
  loc_0040295C:       fild dword ptr [eax+edi*4]
  loc_0040295F:       fstp real8 ptr var_1A8
  loc_00402965:       fld real8 ptr var_1A0
                      If var_405000 = 0 Then
  loc_00402974:         fdiv real8 ptr var_1A8
  loc_0040297A:         GoTo loc_0040298D
                      End If
  loc_00402988:       call MSVBVM60.DLL._adj_fdiv_m64(var_1A8, var_1A4)
  loc_0040298D:       'Referenced from 0040297A
  loc_0040298D:       fstsw ax
                      If MSVBVM60.DLL._adj_fdiv_m64(var_1A8, var_1A4) = 0 Then
  loc_00402997:         call MSVBVM60.DLL.__vbaFpI4
                      Next var_48
  loc_004029CA:       GoTo loc_00402884
                    End If
  loc_004029CF:     var_9C = 1
  loc_004029D9:     var_A4 = 2
  loc_004029DF:     var_AC = &H64
  loc_004029E9:     var_B4 = 2
  loc_004029F5:     var_C4 = 2
                    For var_48 = "" To &H64 Step 1
                      If "" <> esi Then
  loc_00402A4D:         var_50 = Text1.Text
  loc_00402A6F:         var_48 = @CLng("")
                        If var_48 >= 101 Then
  loc_00402A7C:           call MSVBVM60.DLL.__vbaGenerateBoundsError("", arg_8, "", "", "", "", "", "", "")
                        End If
  loc_00402A85:         fild dword ptr [ecx+esi*4]
  loc_00402A88:         fstp real8 ptr var_1B0
  loc_00402A92:         call MSVBVM60.DLL.__vbaR8Str(var_50)
  loc_00402A98:         fcomp real8 ptr var_1B0
  loc_00402A9E:         fstsw ax
                        If MSVBVM60.DLL.__vbaR8Str(var_50) <> 0 Then
  loc_00402AAA:           GoTo loc_00402AAE
                        End If
  loc_00402AAE:         'Referenced from 00402AAA
  loc_00402AC0:         neg esi
                        If esi <> 0 Then
  loc_00402ACA:           var_4C = var_4C + 00000001h
                          If Err.Number <> 0 Then GoTo loc_00402DA1
  loc_00402AD3:           var_4C = var_4C
                        End If
                      Next var_48
  loc_00402AF3:       GoTo loc_00402A28
                    End If
  loc_00402AF8:     var_5C = 1
  loc_00402B0C:     fmul real4 ptr [0040116Ch] ; 
  loc_00402B12:     fstsw ax
                    If Rnd(2) = 0 Then
                      If CLng("") >= 101 Then
  loc_00402B29:         call MSVBVM60.DLL.__vbaGenerateBoundsError
                      End If
                      If var_4C > esi Then
  loc_00402B51:         var_8C = 80020004h
  loc_00402B62:         var_7C = 80020004h
  loc_00402B6B:         var_6C = 80020004h
  loc_00402B71:         var_9C = "WRONG!!!"
  loc_00402B7B:         var_A4 = 8
  loc_00402BAB:         MsgBox(10, esi, 10, ""4, 10)
  loc_00402BC7:         GoTo loc_00402CCB
                      End If
                      If Not Asm.z_flag Then
  loc_00402BD7:         var_8C = 80020004h
  loc_00402BE8:         var_7C = 80020004h
  loc_00402BF1:         var_6C = 80020004h
  loc_00402BF7:         var_9C = "WRONG!!!"
  loc_00402C01:         var_A4 = 8
  loc_00402C31:         MsgBox(10, esi, 10, ""4, 10)
  loc_00402C4D:         GoTo loc_00402CCB
  loc_00402C54:         var_8C = 80020004h
  loc_00402C65:         var_7C = 80020004h
  loc_00402C6E:         var_6C = 80020004h
  loc_00402C74:         var_9C = "WRONG"
  loc_00402C7E:         var_A4 = 8
  loc_00402CAB:         'Referenced from 00402615
  loc_00402CAF:         MsgBox(10, 00000000h, 10, ""4, 10)
  loc_00402CCB:         'Referenced from 00402BC7
                      End If
  loc_00402CD6:       call Exit Sub("", ""4, "", "")
  loc_00402CE2:       GoTo loc_00402D18
  loc_00402D17:       Exit Sub
  loc_00402D18:       'Referenced from 00402CE2
  loc_00402D6D:       call MSVBVM60.DLL.__vbaAryDestruct(00000000h, var_34)
  loc_00402D7C:       Exit Sub
  loc_00402D99:       Exit Sub
                    End If
                  End If
                End If
  loc_00402D9C: GoTo loc_MSVBVM60.DLL.__vbaFPException
  loc_00402DA1: 'Referenced from 0402ACD
  loc_00402DA1: call MSVBVM60.DLL.__vbaErrorOverflow
End Sub
2009-2-9 20:12
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
VB Decompiler果然很强大!
以前总是OD手跟VB,很是痛苦,但是手跟VB有很大的益处。。。。至少培养耐心啊
2009-2-9 20:16
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
早上起来,很期待,先谢谢斑竹的指点,正在按你说的试 激动啊。。。
2009-2-10 12:40
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我动态跟踪了,差点没晕死,跟了1个小时都还在里面 CALL 和RET
其实这个程序前面就3个大分支
00401B3C 00 db 00
00401B3D 00 db 00
00401B3E 00 db 00
00401B3F 00 db 00
00401B40 . 816C24 04 3F0>sub dword ptr [esp+4], 3F
00401B48 . E9 23090000 jmp 00402470 跳往CmdLoad_Click()
00401B4D . 816C24 04 FFF>sub dword ptr [esp+4], 0FFFF
00401B55 . E9 56120000 jmp 00402DB0 跳往注册后主程序PRO
00401B5A . 816C24 04 FFF>sub dword ptr [esp+4], 0FFFF
00401B62 . E9 59260000 jmp 004041C0 跳往GetFileName()
00401B67 00 db 00
00401B68 00 db 00
00401B69 00 db 00
00401B6A 00 db 00
00401B6B 00 db 00



但是我搞不定,沉沦了。。。。。帮我指明方向吧 谢谢
2009-2-10 13:49
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
期待大大们的帮助啊  指明思路
2009-2-10 17:11
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶顶啊,各位帮帮看
2009-2-10 19:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习学习
2009-2-10 21:54
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
12
不知道你在干什么。VB Decompiler已经告诉你了,按钮响应函数是402470,你直接bp 402470,F9,按确定,中断,分析,OK。

哪里什么call和ret。

不知道你在干什么。
2009-2-10 23:28
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
13
00402576   .  FF15 DC104000 call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str<=========注册码变成浮点数在ST1中
0040257C   .  FF15 30114000 call    dword ptr [<&MSVBVM60.__vbaFPInt>;  MSVBVM60.__vbaFPInt
00402582   .  FF15 64104000 call    dword ptr [<&MSVBVM60.__vbaFpR8>>;  MSVBVM60.__vbaFpR8
00402588   .  DC1D 70114000 fcomp   qword ptr [401170]
0040258E   .  DFE0          fstsw   ax<======请问是什么意思??
00402590   .  F6C4 40       test    ah, 40
2009-2-11 08:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
大大们VB好学吗?
2009-2-11 11:23
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不知道你在干什么。[/QUOTE]
我拿od跟了啊 在断点处是找不到我输入的试验密码,觉得里面把输入给处理了. 在跟踪时我很细心和耐心 遇到的call我都按F7跟进去 所以才很多的 谢谢版主的关注

FSTSW AX
保存状态字的值到AX
AX<- MSW

FSTSW dest
保存状态字的值到dest
dest<-MSW (mem16)
2009-2-11 13:41
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
0040257C   .  FF15 30...[/QUOTE]
谢谢柳州小林 你跟到了变成浮点?下面可不可能看看od里面找到后面算法.
2009-2-11 13:49
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=柳州小林;576230]00402576   .  FF15 DC104000 call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str<=========注册码变成浮点数在ST1中
0040257C   .  FF15 30...[/QUOTE]

FSTSW AX
保存状态字的值到AX
AX<- MSW

FSTSW dest
保存状态字的值到dest
dest<-MSW (mem16)
2009-2-11 15:49
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
结了。谢谢大家
2009-2-11 18:42
0
游客
登录 | 注册 方可回帖
返回
//