首页
社区
课程
招聘
[原创][2013/4/23]xspy v0.3,探测mfc/alt/wtl窗口,开源
2013-4-19 11:22 11380

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

2013-4-19 11:22
11380
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和建议反馈,我更新后一定放这里!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (14)
雪    币: 244
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
jiangjing 1 2013-4-19 12:39
2
0
请问一下[00]vftable address = 是怎么获取的?
雪    币: 3178
活跃值: (1486)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
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多。
雪    币: 2863
活跃值: (1602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 2013-4-19 15:30
4
0
神器自然要收藏了。
雪    币: 3178
活跃值: (1486)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
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程序一起发送过来。
雪    币: 291
活跃值: (144)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yzwyq 2013-4-24 10:29
6
0
非常不错的工具
雪    币: 400
活跃值: (239)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
marswu 4 2013-4-24 21:35
7
0
好东东!!顶一下!!!!!11
雪    币: 29414
活跃值: (18695)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2013-5-3 20:49
8
0
有些可惜,为啥不同步更新一份呢?更新,还可以引些人气关注你的Blog.
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
逸云 2013-8-6 11:49
9
0
很好的工具,感谢提供!
雪    币: 3178
活跃值: (1486)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
lynnux 2013-9-3 15:51
10
0
顶个,已经开源
雪    币: 80
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iforgiven 2013-9-4 11:58
11
0
好东西,好东西。
雪    币: 2660
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
安于此生 34 2014-4-11 11:02
12
0
留名
雪    币: 2103
活跃值: (162)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
自学中Ing 2014-7-10 14:33
13
0
就是咯 为啥不同步更新呢?我发布的就一直更新呢
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zylyy 2014-9-22 21:04
14
0
mark
雪    币: 3446
活跃值: (3708)
能力值: ( LV8,RANK:131 )
在线值:
发帖
回帖
粉丝
coneco 2 2018-8-29 11:52
15
0
感谢!
游客
登录 | 注册 方可回帖
返回