【原创】关于如何查找按钮事件(致新手)

【文章标题】: 关于如何查找按钮事件(致新手)
【文章作者】: stalker
【作者邮箱】: zhangke_1989 at hotmail dot com
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  最近在初学者园地看到有人问如何查找按钮事件,在此把我的个人经验简单总结一下,献给初学者
  
  方法一:消息断点法
  这一方法CCDebugger老大已经讲得很清楚,详见
  http://bbs.pediy.com/showthread.php?s=&threadid=21532
  
  方法二:查找分支法
  此法适用与某些无法对窗口下消息断点的程序,如Windows自带的一些程序
  对这类程序下消息断点将会得到一个“Unable to read memory of debugged process......”错误提示
  这个方法大家参考下我的这篇文章
  http://bbs.pediy.com/showthread.php?t=68066
  如果有什么不明白的可以问我
  
  方法三:特殊程序特殊处理法
  以Delphi程序为例,通常情况下要找到一个Delphi程序的按钮事件十分简单,可以通过DeDe来获取按钮事件的地址
  或者用资源编辑工具+十六进制编辑工具来查找
  讲一下后面一个方法,首先用ResScope或者其他工具打开目标程序
  在RCData中能够找到窗体的资源信息,例如
  object Form1: TForm1
    Left = 192
    Top = 107
    Width = 377
    Height = 188
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Button1: TButton
      Left = 40
      Top = 32
      Width = 105
      Height = 25
      Caption = 'Button1'
      TabOrder = 0
      OnClick = Button1Click
    end
    object Button2: TButton
      Left = 208
      Top = 32
      Width = 105
      Height = 25
      Caption = 'Button2'
      TabOrder = 1
      OnClick = Button2Click
    end
  end
  此时假设我们要找“Button1”按钮事件,记住OnClick的名字(在这里就是Button1Click)
  然后再用WinHex打开程序,查找事件名“Button1Click”,结果如下图
  名称:  shot4.JPG查看次数: 525文件大小:  11.3 KB
  事件名的前一个字节就是事件名的长度,再前面就是事件地址了
  OD载入程序之后,直接Ctrl+G前往吧
  这个方法不是我想出来的,是在《加密与解密》第二版中看到的,只是我对Delphi比较有兴趣,所以专门提一下
  当然要让DeDe查找以及这个方法失效也很简单
  进
  http://bbs.pediy.com/showthread.php?t=68806
  
  如果你对Delphi程序也同样有兴趣的话,推荐你也看下这两篇文章
  http://bbs.pediy.com/showthread.php?t=1846
  http://bbs.pediy.com/showthread.php?t=1872
  
  《加密与解密》第二版第七章对针对各种程序的工具方法,都有说明
  如果没有书的话,建议买一本新出的第三版吧,对新手帮助应该是很大的
  
  还有这篇帖子也可以参考参考
  http://bbs.pediy.com/showthread.php?t=20078
  
  方法四:行为特征法
  这个方法就是具体问题具体分析,根据按钮被按下后程序的行为来设置相应断点或做分析来找关键点
  例如按钮按下之后会调用IE打开网页,通常就可以对ShellExecuteA函数下断
  
  最后建议新手们没事的时候翻翻论坛的精华帖,特别是PEDIY方面的,相信看过之后心中不少疑惑自然就会解开(^_^)
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年08月26日 上午 11:24:22

你可能感兴趣的:(【原创】关于如何查找按钮事件(致新手))