zoukankan      html  css  js  c++  java
  • 几种典型程序Button处理代码的定位转

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

    敬请各位指正。

  • 相关阅读:
    买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
    asp.net cookie and session
    leelazero and google colab
    download file by python in google colab
    physical processor, core, logical processor
    通过powershell操作eventlog
    openxml in sql server
    get the page name from url
    How to Execute Page_Load() in Page's Base Class?
    Difference between HttpContext.Request and Request
  • 原文地址:https://www.cnblogs.com/dsky/p/2350614.html
Copyright © 2011-2022 走看看