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

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

2013-4-19 11:22
12824
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

该工具已经加入53aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4c8G2L8$3I4K6i4K6u0W2M7r3g2V1K9i4W2Q4x3X3g2U0L8$3#2Q4x3V1k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0W2Q4z5f1c8Q4z5f1g2Q4c8e0g2Q4b7U0S2Q4b7U0S2Q4c8e0k6Q4z5o6c8Q4z5f1k6Q4c8e0S2Q4b7U0m8Q4b7e0u0Q4c8e0N6Q4z5f1y4Q4z5p5u0Q4c8e0W2Q4z5f1u0Q4b7f1q4Q4c8e0S2Q4z5o6m8Q4z5o6q4Q4c8e0g2Q4b7e0c8Q4b7e0N6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0S2Q4z5p5u0Q4b7e0g2Q4c8e0k6Q4z5f1y4Q4z5o6W2T1N6h3N6Q4c8e0g2Q4z5e0u0Q4z5p5y4Q4c8e0g2Q4b7V1u0Q4b7V1q4Q4c8e0S2Q4b7f1g2Q4b7f1g2Q4c8e0g2Q4z5p5k6Q4z5p5c8Q4c8e0W2Q4b7e0k6Q4z5o6S2Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0k6Q4z5o6S2Q4z5e0q4Q4c8e0k6Q4z5f1u0Q4b7U0c8Q4c8e0k6Q4z5e0k6Q4b7U0m8Q4c8e0g2Q4z5e0m8Q4z5p5g2Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0g2Q4b7f1g2Q4z5f1q4Q4c8e0k6Q4z5e0c8Q4b7V1g2Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0W2Q4z5o6N6Q4z5p5y4Q4c8f1k6Q4b7V1y4Q4z5o6p5`.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 244
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
请问一下[00]vftable address = 是怎么获取的?
2013-4-19 12:39
0
雪    币: 3974
活跃值: (2307)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
3
[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多。
2013-4-19 13:42
0
雪    币: 3411
活跃值: (2132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
神器自然要收藏了。
2013-4-19 15:30
0
雪    币: 3974
活跃值: (2307)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
5
自己顶。0.2版本发布。
CWnd和CDialog信息暂时只有mfc42和mfc90显示得出来,其他MFC版本因我机子只装了VS2008没法弄,只能显示到CCmdTarget的虚函数那层,如果你想帮忙,请随便创建一个MFC对话框工程,在C++命令行里加入/d1reportAllClassLayout,然后编译,把输出窗口里的那些信息复制发送到lynnux@qq.com,当然请注明vs版本,最好连编译好的MFC程序一起发送过来。
2013-4-23 11:04
0
雪    币: 291
活跃值: (204)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
非常不错的工具
2013-4-24 10:29
0
雪    币: 400
活跃值: (239)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
好东东!!顶一下!!!!!11
2013-4-24 21:35
0
雪    币: 58782
活跃值: (21875)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
有些可惜,为啥不同步更新一份呢?更新,还可以引些人气关注你的Blog.
2013-5-3 20:49
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很好的工具,感谢提供!
2013-8-6 11:49
0
雪    币: 3974
活跃值: (2307)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
10
顶个,已经开源
2013-9-3 15:51
0
雪    币: 80
活跃值: (167)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好东西,好东西。
2013-9-4 11:58
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
12
留名
2014-4-11 11:02
0
雪    币: 2103
活跃值: (162)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
就是咯 为啥不同步更新呢?我发布的就一直更新呢
2014-7-10 14:33
0
雪    币: 144
活跃值: (708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
mark
2014-9-22 21:04
0
雪    币: 5141
活跃值: (4940)
能力值: ( LV10,RANK:171 )
在线值:
发帖
回帖
粉丝
15
感谢!
2018-8-29 11:52
0
游客
登录 | 注册 方可回帖
返回