[转]几种典型程序Button处理代码的定位 by jingulong 2006-01-04,15:33
2006-01-06 21:02
411 查看
首先
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段内存断点法了。
敬请各位指正。
xsy3660:
自己试了一程序SnagIt32.exe,是Microsoft Visual C++ 7.0 Method2 [调试] ,按照此法不能断下来!WHY?
过程如下:
之后下断bp IsDialogMessageW [esp+8]==00106AE && [esp+0c]==202。F9后直接出现下列框
jingulong:
你应该这样下断:bp IsDialogMessageW [[esp+8]]==00106AE && [[esp+8]+4]==202
xsy3660:
还有点问题:
1、下断,F9继续程序,点击目标按钮,程序中断后;Alt+F4无作用,为何?
2、对于MFC程序,我们不得不多次重复这样的操作:单步回到MFC领空,再第 5、6步。也就是说断下后按F8至到MFC领空是吧?
3、直到下列情况才算到处理Button点击事件的代码是吗?
0012FE44 77D5F4BA /CALL to IsDialogMessageW from USER32.77D5F4B5
0012FE48 0002059E |hWnd = 0002059E (class='#32770',parent=000205A6)
0012FE4C 00154E58 /pMsg = WM_LBUTTONUP hw = 30578 ("&Add New Profile Wizard...") Keys = 0 X = 216. Y = 11.
0012F918 77D5F4BA /CALL to IsDialogMessageW from USER32.77D5F4B5
0012F91C 001C06A8 |hWnd = 001C06A8 ('Enter Software Key',class='#32770',parent=000304E2)
0012F920 00154E58 /pMsg = WM_LBUTTONUP hw = E0792 ("OK") Keys = 0 X = 34. Y = 13.
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
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段内存断点法了。
敬请各位指正。
xsy3660:
自己试了一程序SnagIt32.exe,是Microsoft Visual C++ 7.0 Method2 [调试] ,按照此法不能断下来!WHY?
过程如下:
之后下断bp IsDialogMessageW [esp+8]==00106AE && [esp+0c]==202。F9后直接出现下列框
jingulong:
你应该这样下断:bp IsDialogMessageW [[esp+8]]==00106AE && [[esp+8]+4]==202
xsy3660:
还有点问题:
1、下断,F9继续程序,点击目标按钮,程序中断后;Alt+F4无作用,为何?
2、对于MFC程序,我们不得不多次重复这样的操作:单步回到MFC领空,再第 5、6步。也就是说断下后按F8至到MFC领空是吧?
3、直到下列情况才算到处理Button点击事件的代码是吗?
0012FE44 77D5F4BA /CALL to IsDialogMessageW from USER32.77D5F4B5
0012FE48 0002059E |hWnd = 0002059E (class='#32770',parent=000205A6)
0012FE4C 00154E58 /pMsg = WM_LBUTTONUP hw = 30578 ("&Add New Profile Wizard...") Keys = 0 X = 216. Y = 11.
0012F918 77D5F4BA /CALL to IsDialogMessageW from USER32.77D5F4B5
0012F91C 001C06A8 |hWnd = 001C06A8 ('Enter Software Key',class='#32770',parent=000304E2)
0012F920 00154E58 /pMsg = WM_LBUTTONUP hw = E0792 ("OK") Keys = 0 X = 34. Y = 13.
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
由 xsy3660 于 2006-01-05 23:56 最后编辑
_____________________________@
路漫漫其修远兮,吾将上下而求索!-xsy3660
http://xsy3660.ys168.com/
相关文章推荐
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位---转
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位
- 几种典型程序Button处理代码的定位
- 对象事件与处理程序代码进行关联的几种方式
- 使用MAP文件快速定位程序崩溃代码行
- 代码关闭程序的几种方法
- 编写高质量代码改善C#程序的157个建议——建议85:Task中的异常处理
- C#控制台程序中处理2个关闭事件的代码实例
- C#写的照片上传代码--建立一个一般处理程序
- 2440裸板程序之代码重定位
- 典型的数组处理代码(algs4)
- [编写高质量代码:改善java程序的151个建议]建议71 推荐使用subList处理局部列表
- 2013 Mac Air 装Win7双系统问题-安装程序无法创建新的分区,也无法定位系统 & Windows无法安装所需的文件,错误代码0x80070570
- 个人学习代码保存:例4.在.net程序中使用事务处理
- 使用ASP.NET一般处理程序或WebService返回JSON的实现代码