首页
论坛
课程
招聘

[[spy]] [原创][2013/4/23]xspy v0.3,探测mfc/alt/wtl窗口,开源

2013-4-19 11:22 5654

[[spy]] [原创][2013/4/23]xspy v0.3,探测mfc/alt/wtl窗口,开源

2013-4-19 11:22
5654
mfcspy大概只支持到vc6.0吧,这个xspy继承mfcspy,目标是支持所有mfc版本。并且加入对ATL/WTL的简单分析。
已经开源:http://bbs.pediy.com/showthread.php?t=178253

changelog:
2013年4月23日
0.3版本,初步支持x64位,暂时只测试了mfc90编译的x64程序
以后更新会放慢,根据使用反馈情况定

2013年4月23日
0.2版本发布,精确检测静态链接的MFC程序的信息,暂时只支持mfc42和mfc90的CWnd和CDialog的虚函数显示(因为我机子只有vs2008),其他MFC版本只显示到父类CCmdTarget。

2013年4月19日
0.1版本发布,暂时无MFC类成员变量信息显示

features:
借鉴mfcspy,目标是支持所有mfc版本
支持ATL/WTL的简单分析
分析速度比mfcspy更快

本程序仅作学习交流研究之用,还有很多bug和不完善的地方,如果你发现无法分析的程序,有可能的话请将样本程序发送至
lynnux@qq.com,有建议或意见也请发送至这个邮箱,非常感谢!

greets:
特别感谢 goldenegg http://bbs.pediy.com/showthread.php?s=&threadid=9805
另外感谢 LoveMeiL http://bbs.pediy.com/showthread.php?p=1143082

该工具已经加入http://tools.pediy.com/,非常感谢看雪老大,若有bug和建议反馈,我更新后一定放这里!

[培训]科锐逆向工程师培训班38期--远程教学预课班将于 2020年5月28日 正式开班!

上传的附件:
最新回复 (14)
jiangjing 1 2013-4-19 12:39
2
0
请问一下[00]vftable address = 是怎么获取的?
lynnux 2013-4-19 13:42
3
0
[QUOTE=jiangjing;1168476]请问一下[00]vftable address = 是怎么获取的?[/QUOTE]

你说的是分析ATL/WTL窗口的结果吧?
如果是对话框,通过LONG_PTR winProc = ::GetWindowLongPtr(hWnd, DWLP_DLGPROC);
一般的窗口用LONG_PTR  winProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);

得到的地址就是atl里的thunk数据,参考d:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlstdthunk.h中的_stdcallthunk数据结构。主要包含窗口类的this指针和一个窗口回调过程

比如分析xspy自身:
----------获取ATL/WTL相关信息-------------
DWLP_DLGPROC address: 0x00596188 // 即::GetWindowLongPtr(hWnd, DWLP_DLGPROC);得到的结果
Dialog thunk address = 0x00596188 // thunk地址,即上面的值
class intstance = 0x0043F98C // 窗口类this指针
DialogProc= 0x001A96F0 // 回调函数
[00]vftable address = 0x001BB6BC // this地址头个成员就是虚函数表的指针
[vtbl+00]ProcessWindowMessage = 0x001A6640 // 虚函数表的第一个函数
GWLP_WNDPROC address: 0x75D2BB59  // 即::GetWindowLongPtr(hWnd, GWLP_WNDPROC);得到的结果

其中ProcessWindowMessage比较重要,所有消息都会经过这里。
ATL/WTL程序不像MFC程序那样,没有message map结构,因此读到的信息没有MFC多。
chixiaojie 2013-4-19 15:30
4
0
神器自然要收藏了。
lynnux 2013-4-23 11:04
5
0
自己顶。0.2版本发布。
CWnd和CDialog信息暂时只有mfc42和mfc90显示得出来,其他MFC版本因我机子只装了VS2008没法弄,只能显示到CCmdTarget的虚函数那层,如果你想帮忙,请随便创建一个MFC对话框工程,在C++命令行里加入/d1reportAllClassLayout,然后编译,把输出窗口里的那些信息复制发送到lynnux@qq.com,当然请注明vs版本,最好连编译好的MFC程序一起发送过来。
yzwyq 2013-4-24 10:29
6
0
非常不错的工具
marswu 4 2013-4-24 21:35
7
0
好东东!!顶一下!!!!!11
kanxue 8 2013-5-3 20:49
8
0
有些可惜,为啥不同步更新一份呢?更新,还可以引些人气关注你的Blog.
逸云 2013-8-6 11:49
9
0
很好的工具,感谢提供!
lynnux 2013-9-3 15:51
10
0
顶个,已经开源
iforgiven 2013-9-4 11:58
11
0
好东西,好东西。
安于此生 34 2014-4-11 11:02
12
0
留名
自学中Ing 2014-7-10 14:33
13
0
就是咯 为啥不同步更新呢?我发布的就一直更新呢
zylyy 2014-9-22 21:04
14
0
mark
coneco 2 2018-8-29 11:52
15
0
感谢!
游客
登录 | 注册 方可回帖
返回