首页
社区
课程
招聘
[分享]OllyDBG中快速定位VB按钮的处理程序
发表于: 2005-12-26 18:12 15290

[分享]OllyDBG中快速定位VB按钮的处理程序

2005-12-26 18:12
15290
今天看到AndreaGeddon的关于VB反汇编的一篇教程(http://www.reteam.org/papers/e46.pdf),根据他的介绍,我总结出了以下的快速定位VB按钮OnClick的处理程序.

我以windayjian的伊朗程序员的VB CrackMe为例示范一下步骤(因为刚看过,就没有找其它的例子).

1. 运行原程序,知道注册的按钮是”OK”
2. 所以就在OllyDBG中搜索字符串”OK”,结果找到如下的地方:0040BA1D

0040BA1D | ASCII "&OK",0

3. 然后双击,我们就在CPU窗口中了,往上看,我们看到”Command1”,好,我们知道了OK按钮的名字是”Command1”.

0040BA10 . 43 6F 6D 6D 61 6E 64 31 00 ASCII "Command1",0
0040BA19 04 DB 04
0040BA1A 01 DB 01
0040BA1B 03 DB 03
0040BA1C 00 DB 00
0040BA1D . 26 4F 4B 00 ASCII "&OK",0
0040BA21 04 DB 04
0040BA22 B8 DB B8
0040BA23 0B DB 0B
0040BA24 80 DB 80

4. 然后回到字符串参考窗口,搜索”Command1”,注意要在右边的那一栏,结果我们找到了两个,一个在00407474, 另一个在00407828. 这里因为我们不知道到底是哪一个,所以两个都试试. 先来00407474的那个,双击它.

00407474 | DD CrackMe2.00407FFC | ASCII "Command1"
00407828 | DD CrackMe2.00407FFC | ASCII "Command1"

5. 在CPU窗口中往上隔一个DD的位置0040746C,我们把光标移到这一行,OllyDBG自动帮我们加了跳转.按回车键,就自动带到了目的地00407658

0040746C /58764000 DD CrackMe2.00407658
00407470 |E0 DB E0
00407471 |B4 DB B4
00407472 |19 DB 19
00407473 |00 DB 00
00407474 |FC7F4000 DD CrackMe2.00407FFC ; ASCII "Command1"
00407478 |01 DB 01
00407479 |00 DB 00
0040747A |03004000 DD CrackMe2.00400003

6. 然后我们就看到了整整齐齐的一排地址,注意<JMP.&MSVBVM60.EVENT_SINK_Release>下面的那一行0040767D, 所指示的地址0040771D就是对应的处理程序

00407658 00 DB 00
00407659 00 DB 00
0040765A 00 DB 00
0040765B 00 DB 00
0040765C 54744000 DD CrackMe2.00407454
00407660 30734000 DD CrackMe2.00407330
00407664 88194000 DD <JMP.&MSVBVM60.EVENT_SINK_QueryInterface>
00407668 8E194000 DD <JMP.&MSVBVM60.EVENT_SINK_AddRef>
0040766C 94194000 DD <JMP.&MSVBVM60.EVENT_SINK_Release>
00407670 1D774000 DD CrackMe2.0040771D
00407674 00 DB 00
00407675 00 DB 00
00407676 00 DB 00
00407677 00 DB 00

7. 我们再按回车键,就到了可以下断点的地方了,好了在0040771D下断点
00407710 . 816C24 04 3B000000   SUB DWORD PTR SS:[ESP+4],3B
00407718 . E9 63460000          JMP CrackMe2.0040BD80
0040771D . 816C24 04 43000000   SUB DWORD PTR SS:[ESP+4],43
00407725 . E9 C6460000          JMP CrackMe2.0040BDF0
0040772A . 816C24 04 47000000   SUB DWORD PTR SS:[ESP+4],47
00407732 . E9 A9470000          JMP CrackMe2.0040BEE0
00407737 . 816C24 04 37000000   SUB DWORD PTR SS:[ESP+4],37
0040773F . E9 0C480000          JMP CrackMe2.0040BF50
00407744 . 816C24 04 FFFF0000   SUB DWORD PTR SS:[ESP+4],0FFFF
0040774C . E9 8F4B0000          JMP CrackMe2.0040C2E0
00407751 . 816C24 04 3B000000   SUB DWORD PTR SS:[ESP+4],3B
00407759 . E9 124D0000          JMP CrackMe2.0040C470

8. 对于另外一个”Command1”, 我们做同样的处理. 然后就可以跑程序了,试试点点按钮,是不是被OllyDBG断下来了,试了之后知道其中一个”Command1”是对应”Register”的

还有,如果是中文的按钮,在字符串参考中找不到,这时候可以在CPU窗口中Ctrl+B来搜索.

[课程]Linux pwn 探索篇!

收藏
免费 7
支持
分享
最新回复 (30)
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
不错哦,
2005-12-26 18:24
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个方法也不错,建议斑主加精华,方便日后需要时查看
2005-12-26 19:26
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
4
VB 的程序可以用 VBExplorer 这个软件来打开看看,你会发现很多你想要的东西。
2005-12-26 19:53
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wdx
5
很好的东东,谢谢
2005-12-26 21:59
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
6
支持下,收藏
2005-12-26 22:02
0
雪    币: 273
活跃值: (250)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
7
不错哦。。要学习哦。!!
2005-12-26 22:25
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
最初由 4nil 发布
支持下,收藏
2005-12-26 22:55
0
雪    币: 243
活跃值: (190)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
9
想不到还被你发现了,通不通用的啊?VB还有很多很搞笑的地方哦
2005-12-27 00:17
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
10
这个方法没有试过,回去看看!
2005-12-27 09:02
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有见的!!11
2005-12-27 09:05
0
雪    币: 203
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不错哦!好好学习!
2005-12-27 09:09
0
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
13
getvbresource
2005-12-27 13:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
比较实用的好东东。
2005-12-27 15:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不错,学习!
2005-12-27 17:10
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
楼主好强啊
2005-12-27 18:00
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 windayjian 发布
想不到还被你发现了,通不通用的啊?VB还有很多很搞笑的地方哦

真是惭愧,这个不是我发现的,我只是分享AndreaGeddon的发现.按照原文中的描述,这个方法应该是通用的,如原文所说"The exe itself is full of precious infos, you can easily find all event handlers."
2005-12-27 20:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这样也行,又开了一条捷径
2005-12-28 14:43
0
雪    币: 119
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
好!顶!好文章1
2005-12-30 16:08
0
雪    币: 239
活跃值: (473)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
20
不错,支持
2005-12-30 16:34
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
21
原来顶过了,再顶一下
我也看了那个PDF,的确不错
而楼主能把老外e文的东西消化吸收后做个简明扼要地示例共享出来,实在值得褒奖。
建议加精啊,kanxue老大,进2005精华7chm
2005-12-30 22:59
0
雪    币: 205
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
又长见识了!
2005-12-31 01:59
0
雪    币: 560
活跃值: (354)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
23
VB感觉还是用OD的万能插件好用.
2005-12-31 12:37
0
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
最初由 bcer 发布
6. 然后我们就看到了整整齐齐的一排地址,注意<JMP.&MSVBVM60.EVENT_SINK_Release>下面的那一行0040767D, 所指示的地址0040771D就是对应的处理程序


0040767D ===> 00407670
2005-12-31 17:38
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
25
很好,以前知道在delphi的程序中有类似的查找方法,没想到在VB的程序中也有。
2005-12-31 23:26
0
游客
登录 | 注册 方可回帖
返回
//