首页
社区
课程
招聘
几种典型程序Button处理代码的定位
发表于: 2006-1-4 15:33 76826

几种典型程序Button处理代码的定位

2006-1-4 15:33
76826

首先
1 od 下运行程序,F12 暂停;
2 View菜单中选击Windows项,在打开的窗口中可以从Title栏看到目标按钮,从而找到它的Handle(xxxxxxxx) ;

对不同平台生成的程序,分别处理:

一、VB, Delphi, CBuilder 程序:
3 在CallWindowProcA入口下条件断点: [esp+8]==xxxxxxxx && [esp+0c]==202;
4 F9继续程序,点击目标按钮,程序中断;
5 Alt+F4,在代码段(.text)上下访问断点;
6 F9执行程序,程序中断,
   1). VB程序中断在下面代码
     PUSH DWORD PTR DS:[EAX+EBX]              ; yyyyyyy
     上面[EAX+EBX]的值(yyyyyy)就是我们要找的位置。

   2). Delphi, CBuilder 的程序
     程序直接断在我们要找的位置。

借moon一句,这姑妄称作CallWindowProcA条件断点加上code段内存断点法吧。

二、VC程序
又分MFC和Win32两种情况,二者相同之处:
3 在IsDialogMessageW入口下条件断点: [[esp+8]]==xxxxxxxx && [[esp+8]+4]==202
4 F9继续程序,点击目标按钮,程序中断;
5 Alt+F4,在代码段上下访问断点;
6 F9执行程序,程序中断, 注意这里虽然中断在code段,但却不是处理Button点击事件的代码处
  这时:
  对Win32程序,只需要按几下F7,当回到User32.dll领空后再重复一次第 5、6步就可以了;
  而对于MFC程序,我们不得不多次重复这样的操作:单步回到MFC领空,再第 5、6步。好在已经看到大陆啦!

类比,这就叫IsDialogMessageW条件断点加上code段内存断点法了。

敬请各位指正。


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

收藏
免费 9
支持
分享
最新回复 (70)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
抢winndy的沙发
2006-1-4 15:42
0
雪    币: 440
活跃值: (697)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
3
沙发~~~
被shoooo抢了
555
2006-1-4 15:42
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
4
干吗要抢

两个人在沙发上一起做不就行了。

我做板凳上看。
2006-1-4 15:49
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很实用的东西,收下学习。
2006-1-4 15:59
0
雪    币: 2506
活跃值: (1025)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
6
沙发的由来是:
有人发了美女图,回帖的人说好正点,要坐沙发打××。
然后,凡是发了好图得到支持的都说坐沙发。
后来,许多火星人不理解沙发这个词,然后就认为沙发指的是第一个回帖的人。
......

原文在此:
http://www.sky2sea.net/Dispbbs.asp?BoardID=12&replyID=9390&id=1340&skin=0

另一个用google搜到的解释:
经常看见某些网站的某主题贴内第一个跟贴的回复就说:“沙发”。。。第二个就说“板凳”。。。还以为抢到第一的就坐“沙发”。。。第二的就只能坐“板凳”。。。其实“沙发”这个词最初是出现在黄色网站。。。某人发表了成人贴子。。。别人看见了说“沙发”。。。意思为:楼主的贴子MM好正点,我受不了要坐在沙发上ZW。。。而第二的只能坐在板凳上ZW了。。。而如今上哪都看见“沙发”“板凳”,真叫那个寒。。。

原文在此:
http://www.hnlm.net/nomusic/dispbbs.asp?boardID=32&ID=23119
2006-1-4 16:02
0
雪    币: 440
活跃值: (697)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
7
2006-1-4 16:43
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
8
2006-1-4 17:11
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
楼主如果能给合具体例子讲解一下就最好不过了
2006-1-4 17:15
0
雪    币: 212
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
看懂了,也试了一下,真爽,谢谢
2006-1-4 18:12
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
3 在CallWindowProcA入口下条件断点: [esp+8]==xxxxxxxx && [esp+0c]==202;

请问怎么到 CallWindowProcA入口下条件断点?谢谢
2006-1-4 18:56
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
12

看完了楼主的过程,也试了一下,果然被断下,在OD的命令行输入:
bp CallWindowProcA  [esp+8]==00090310&& [esp+0c]==202
就可以了,
2006-1-4 20:17
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
13

看完了楼主的过程,也试了一下,果然被断下,在OD的命令行输入:
bp CallWindowProcA  [esp+8]==00090310&& [esp+0c]==202
00090310是句柄值,就可以了。多谢楼主了!!
对不起,网速太慢!多按了一次
2006-1-4 20:18
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
14
呵呵.Good
我一直用SendMessage,Condition在用.
你这个条件设置得很好.
2006-1-4 20:53
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
15
学习了
2006-1-4 21:29
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
study!
2006-1-4 22:04
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
17
老大出手了.
2006-1-4 22:12
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
学习
2006-1-5 04:05
0
雪    币: 217
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
5 Alt+F4,在代码段(.text)上下访问断点;

我每次都断在user32里面了,按alt+f4什么反映都没有,顺便问下怎么在.text上下断点,我怎么找不到,谢谢!
2006-1-5 04:39
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
20
谢谢楼主。
太棒了。
顺便回一下楼上的,你用的调试器可能跟楼主不一样。
2006-1-5 08:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
??中,,?可以直接段在Function 下的哪各位置
2006-1-5 12:38
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
试了一下MFC程序,重复十五次以上的Alt+M,F2,F9,F8

汉....
2006-1-5 16:32
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
很实用的教程,谢谢!
2006-1-5 16:59
0
雪    币: 371
活跃值: (790)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
24
不同凡响~~
2006-1-5 17:27
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
25
好一篇精华文章,顶
2006-1-5 18:13
0
游客
登录 | 注册 方可回帖
返回
//