首页
社区
课程
招聘
[求助]GoogleEarth的Direct3D问题
发表于: 2009-8-31 10:38 6335

[求助]GoogleEarth的Direct3D问题

2009-8-31 10:38
6335
本人在用googleearth开发一个小软件,想直接在Googleearth的界面上叠加自己绘制的图形,我通过hook d3d9.dll中Direct3DCreate9来获得设备,然后在上面绘制图形,并在ms的一个d3d demo程序Vertices.exe测试通过。 但是GoogleEarth中没有调用Direct3Create9这个函数,因此得不到期望的结果。经过跟踪,ge使用了D3d8thk.dll中的函数。
问:
1.哪里能找到D3d8thk.dll中函数的原型,我在msdn和网上没有搜到;
2.D3d8thk.dll是怎么使用directX的;
3.有没有其他方法截获directX surface的刷新或切换

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
2
没意义的活动,如果你是单纯研究技术的话,可以,如果是打算产品的话,搞点自己的东西吧
2009-8-31 20:53
0
雪    币: 209
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很多游戏都不是直接用d3d9的,你看下googleearth进程空间里总共加了什么dll吧,既然是用directx3d,那肯定还是原来的接口
2009-8-31 22:37
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我看过了,进程中加载了d3d9.dll、d3d8thk.dll、d3dim.dll三个和directx相关的,如果系统中没有d3d9.dll,则googleearth报告不能使用directx方式,但是我挂接了Direct3DCreate9这个最基本的函数,却没有被调用过。
经过跟踪,在ge运行起来后,只调用d3d8thk中的函数绘图,我想挂接这个库,但是网上没有任何说明,我想既然google用这个接口开发,应该会有相关的文档吧。(声明一下,d3d8thk是ms的库)。或者,有另一种东西封装了这个库?


呵呵,产品也罢、研究也罢,有时间钻研点自己不懂的东西不好吗?
2009-9-1 09:03
0
雪    币: 209
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知你电脑装的是debug版本的directx9还是release版本的directx9.
我的是debug版本的,d3d9.dll依赖d3d8thk.dll和d3d9d.dll,其中d3d9d.dll也依赖于d3d8thk.dll.

程序跑起来以后在d3d8thk.dll模块上下内存断点,从堆栈回溯调用看有线索吗
2009-9-1 14:33
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我装的是SDK中的d3d9。
通过调用关系分析,没有调用d3d9d.dll,因此可能不是debug版本的吧。
另外,ge是先加载d3d8thk.dll后再加载d3d9.dll,是不是说d3d8thk依赖于d3d9呢?
2009-9-7 09:36
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
原来我从网上看到的Hook DirectX的程序是针对静态连接的程序,它只是修改了程序的函数输入表。而ge是动态调入d3d9.dll的,这种Hook方式自然就失效了,因此我看不到对Direct3Create9的调用。
后来改为直接Hook D3D9.dll的Direct3Create9函数,问题就解决了
2009-9-16 11:13
0
游客
登录 | 注册 方可回帖
返回
//