首页
社区
课程
招聘
[旧帖] [讨论]怎样破解vb6中On error goto 中的代码 0.00雪花
发表于: 2010-12-15 15:28 1459

[旧帖] [讨论]怎样破解vb6中On error goto 中的代码 0.00雪花

2010-12-15 15:28
1459
纯粹出于学习的目的,源程序如下:
Private Sub Command1_Click()
On Error GoTo errHandler

Dim a As Long
Dim b As Long
Dim c As Long
   
a = 1 / 0
'纯粹迷惑用的
b = 3
c = a + b
Label1.Caption = c
Exit Sub
errHandler:
'这里可以放真正的算法
    a = 6
    b = 7
    c = a + b
    Label1.Caption = c
End Sub
这样的一个小程序生成exe后,在OD中怎样跟进到真正的算法部分里去?
一发生错误就跑进msvbvm60.dll中了,出不来了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
vb就和虚拟机一个样,
我这个小菜玩不转
2010-12-15 17:39
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
难道大牛们对这样的帖子都不屑一顾?
还是看到vb6 on error 就绕道走?
2010-12-16 11:43
0
雪    币: 33
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
00401BAB   .  6A 01         push 1      // jmp  00401C33
00401BAD   .  FF15 20104000 call ds:[<&MSVBVM60.__vbaOnError>]       ;  MSVBVM60.__vbaOnError
00401BB3   .  DD05 D0104000 fld qword ptr ds:[4010D0]
00401BB9   .  833D 00204000>cmp dword ptr ds:[402000],0
00401BC0   .  75 08         jnz short 00401BCA
00401BC2   .  DC35 C8104000 fdiv qword ptr ds:[4010C8]
00401BC8   .  EB 11         jmp short 00401BDB
00401BCA   >  FF35 CC104000 push dword ptr ds:[4010CC]
00401BD0   .  FF35 C8104000 push dword ptr ds:[4010C8]
00401BD6   .  E8 29F5FFFF   call <jmp.&MSVBVM60._adj_fdiv_m64>
00401BDB   >  DFE0          fstsw ax
00401BDD   .  A8 0D         test al,0D
00401BDF   .  0F85 ED000000 jnz 00401CD2
00401BE5   .  FF15 78104000 call ds:[<&MSVBVM60.__vbaFpI4>]          ;  MSVBVM60.__vbaFpI4
00401BEB   .  83C0 03       add eax,3
00401BEE   .  0F80 E3000000 jo 00401CD7
00401BF4   .  8BF8          mov edi,eax
00401BF6   .  8B16          mov edx,ds:[esi]
00401BF8   .  56            push esi
00401BF9   .  FF92 00030000 call ds:[edx+300]
00401BFF   .  50            push eax
00401C00   .  8D45 D0       lea eax,ss:[ebp-30]
00401C03   .  50            push eax
00401C04   .  FF15 24104000 call ds:[<&MSVBVM60.__vbaObjSet>]        ;  MSVBVM60.__vbaObjSet
00401C0A   .  8BF0          mov esi,eax
00401C0C   .  8B16          mov edx,ds:[esi]
00401C0E   .  57            push edi
00401C0F   .  8955 B4       mov ss:[ebp-4C],edx
00401C12   .  FF15 08104000 call ds:[<&MSVBVM60.__vbaStrI4>]         ;  MSVBVM60.__vbaStrI4
00401C18   .  8BD0          mov edx,eax
00401C1A   .  8D4D D4       lea ecx,ss:[ebp-2C]
00401C1D   .  FF15 80104000 call ds:[<&MSVBVM60.__vbaStrMove>]       ;  MSVBVM60.__vbaStrMove
00401C23   .  50            push eax
00401C24   .  56            push esi
00401C25   .  8B4D B4       mov ecx,ss:[ebp-4C]
00401C28   .  FF51 54       call ds:[ecx+54]
00401C2B   .  DBE2          fclex
00401C2D   .  3BC3          cmp eax,ebx
00401C2F   .  7D 4E         jge short 00401C7F
00401C31   .  EB 3D         jmp short 00401C70
00401C33   .  BF 0D000000   mov edi,0D
2010-12-16 16:22
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=jfaumt;903655]00401BAB   .  6A 01         push 1      // jmp  00401C33
00401BAD   .  FF15 20104000 call ds:[<&MSVBVM60.__vbaOnError>]       ;  MSVBVM60.__vbaOnErro...[/QUOTE]

感谢关注,这个地方我下断点倒也下过,只是看不出反汇编出的代码与
    a = 6
    b = 7
    c = a + b
    Label1.Caption = c
的对应关系,怎么没有出现6、7这些值,直接就把0D (6+7)的值给出来了?。caption那里倒是有。

对汇编不熟。
这个 mov edi,0D中的0D是怎么得出来的?没看见过程
2010-12-16 17:04
0
游客
登录 | 注册 方可回帖
返回
//