天天挂茶馆

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
热搜: C++
查看: 2745|回复: 0

用OD手动查找窗口过程函数(classProc)

[复制链接]

224

主题

469

回帖

42万

积分

管理员

积分
429745
QQ
发表于 2018-10-4 21:51:13 | 显示全部楼层 |阅读模式
有时候我们用OD查找窗口的classProc地址是不正确的,这时候可以用如下方法手动查找

1. 用OD打开被调试程序
    打开 插件->API断点设置工具->常用断点设置,把CreateWindow的三个函数勾上,确定
   
2. 按F9让程序运行并在断点停下,直到在堆栈窗口观察到你要的窗口名字(本文以“计算器”为例)



3. 一路F8执行直到回到调用CreateWindowExW的代码段,并在附近找到pWndClassEx,可发现pWndClassEx的值存放在eax中,下面的RegisterClassExW就是利用pWndClassEx把窗口过程函数和窗口绑定起来的


4. 我们把断点设置在push eax这行并清空其他断点,重新运行程序到断点处,在命令行键入db eax可以查找到pWndClassEx的数据,我们用MSDN查找
pWndClassEx的数据结构如下图,可以发现窗口过程函数保存在lpfnWndProc变量中,即第三个DWORD数据

从数据窗口可以看到pWndClassEx的数据,以我查到的结果为例,窗口过程函数的地址应为0x00731EDE(这里要注意,低字节在右边)



5. Ctrl+G 键入0x00731EDE我们就可以跳转到窗口过程函数的代码啦~

---------------------本文来自 小明湖畔 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010497228 ... 045?utm_source=copy
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表