作者:小童
工具:OllyDbg、Delphi程序一个、易语言程序一个、MFC程序一个
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
《《《Delphi程序》》》
特征码:FF 93 20 01 00 00 5B C3 53
-----------------------------------------------------------------------------
《《《易语言程序》》》
特征码:FF 55 FC 5F 5E 89 5D F4
特征码来源:krnln.fnr
-----------------------------------------------------------------------------
《《《MFC程序》》》
RELEASE
特征码:FF 55 14 EB 7F FF 75 0C
特征码来源:MFC42.DLL
DEBUG
特征码:FF 55 FC E9 48 04 00 00 33 C9
特征码来源:MFC42D.DLL
-----------------------------------------------------------------------------
使用方法:OD载入程序---F9运行---Alt+M打开内存镜像---Ctrl+B搜索特征码---Ctrl+G跳到找到的地址---F2下断---点击按钮---断下后F7进入CALL(此处即为事件代码)
说明:对于Delphi程序和易语言程序,根据目前测试的情况来看,都是一击必杀,例无虚发
   对于MFC程序只取了VC++6.0的特征码
   易语言程序下断后,可能界面没出来就断下了,这是因为断下的是[启动窗口创建完毕事件]或[时钟周期事件]
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
欢迎暴力测试,有问题楼下说明!

  • 标 题:答复
  • 作 者:guxinyi
  • 时 间:2010-12-25 00:53:10

我也贡献下:
得到按钮响应函数地址的方法:

1、在MFC42.DLL的偏移0x23BA处下断点,进入这个函数后,遇见的第一个CALL就是进入程序空间

2、下消息断点

WinDbg中的断点:

MFC程序:
bp User32!IsDialogMessageA ".if( poi( poi(esp+8) ) == 控件的句柄 and poi( poi(esp+8) + 4 ) == WM_LBUTTONUP ){}.else{gc}"


OD中的断点:

vc
bp IsDialogMessageA [[esp+8]]==控件的句柄 && [[esp+8]+4]==WM_LBUTTONUP

VB, Delphi, CBuilder 
bp CallWindowProcA [esp+8]==控件的句柄 && [esp+0c]==WM_LBUTTONUP