king的专栏

程序员驿站

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

标 题: 几种典型程序Button处理代码的定位
作 者: jingulong
时 间: 2006-01-04,15:33:43
链 接: http://bbs.pediy.com/showthread.php?t=20078

首先
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段内存断点法了。

 

答复:
bp IsDialogMessageW [[esp+8]]==00106AE && [[esp+8]+4]==202
bp IsDialogMessageW [[esp+8]]==00106AE && MSG==202

阅读更多
上一篇winxp下安装VC6和编译openssl1.0.1e(Release版附带zlib)
下一篇Iptables开放22,53,80端口
想对作者说点什么? 我来说一句

几种老外设计的button类,vc代码

2007年05月06日 703KB 下载

button 样式 代码

2010年02月26日 1.2MB 下载

高精度室内可见光定位算法

2018年04月29日 1.15MB 下载

无线定位技术

2013年01月28日 2.08MB 下载

嵌入式软件测试方法与技术

2011年11月16日 260KB 下载

几种典型配色方案.htm

2008年12月25日 23KB 下载

三边定位算法

2013年03月21日 13KB 下载

android Button监听事件的几种类型

2014年03月30日 1.31MB 下载

没有更多推荐了,返回首页

关闭
关闭