首页
社区
课程
招聘
[旧帖] DX 游戏如何实现后台截图?? 0.00雪花
发表于: 2012-7-16 09:22 20287

[旧帖] DX 游戏如何实现后台截图?? 0.00雪花

2012-7-16 09:22
20287
【求助】 DX 游戏如何实现后台截图??

求解,这个问题困扰了好久,不知道哪位朋友有代码发出来给学习学习啊.. 先谢谢了哦


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (32)
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶上去.....
2012-7-17 21:26
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
这个没试过,直接读取桌面像素不行吗?
2012-7-17 23:26
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没用的。 截普通窗口的方法代码,在Dx游戏里截不出来画面的..
2012-7-18 15:49
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
大漠大漠。去研究下
2012-7-18 16:31
0
雪    币: 139
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不懂,帮你顶一下!!!!
2012-7-19 13:22
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
inline hook d3d Present
2012-7-19 21:26
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
得,直接把d3d9换成自已的库。
2012-7-21 19:53
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你好,请问能稍微再详细点儿吗?

具体应该用什么方法将d3d9的库,换成自己的呢?
劫持dll 自己写个dll替代?还是什么方法?
2012-7-21 22:34
0
雪    币: 51
活跃值: (61)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
简单的 我搞过 hook双缓冲内存 定时把内存内容复制下来 不过游戏帧率会掉
2012-7-28 14:59
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
大漠插件不是可以么
2012-7-28 15:36
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Bun
12
顶7L HookD3D

Present=GetprocAddress("d3d9.dll")+40EA0

因为D3D函数是虚函数 所以可以由DLL句柄+偏移 算出在内存中的地址
2012-8-1 00:12
0
雪    币: 788
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
什么游戏啊,一般都可以截图的!!!要实现后台的,基本上实现不了吧!窗口都没有刷新
2012-8-1 00:15
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
也不一定非说将游戏窗口最小化了。
不知道 ShowWindow 这个函数将游戏窗口隐藏起来的话,游戏窗口是否还是会刷新,若还是会刷新,那么我就用他将游戏窗口隐藏起来啊。

不过的话,按说既然是辅助,我将游戏获取窗口状态的地址给修改了,让他一直处于窗口前置的状态,按说应该也是可以的吧。。

现在最头大的就是不知道 D3D游戏如何截图.
2012-8-1 11:08
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
用大漠插件就可以了吧。创建dm.dmsoft对象
2012-8-1 12:33
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
2012-8-1 22:12
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
什么都用别人的,哪还学编程干嘛
2012-10-1 15:46
0
雪    币: 15
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个必须顶的
2012-10-1 16:40
0
雪    币: 15
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
自己写个dll然后替换掉原来的 然后别人调用的时候在转接到原来的库上 不知道这样行不行
2012-10-1 16:41
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
果断大漠......
2012-10-2 17:20
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
21
後臺截圖很麻煩的,主要是d2d d3d8 d3d9 掛鉤獲取後臺緩衝區,而且這三種需要3個dll
2012-10-2 17:50
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
流程是这样的
hook IDirect3DDevice9::Present
在Present里拿到this,也就是一个IDirect3DDevice9*指针
this->GetBackBuffer,拿到后台缓冲区表面
D3DXSaveSurfaceToFileInMemory拿到的表面,可以指定D3DXIFF_DIB,这样在内存中就以DIB格式保存了那个后台表面的截图了
2012-10-6 11:37
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
23
正解,搂主多尝试下
2012-10-6 13:51
0
雪    币: 45
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
假如游戏里面有截屏的功能 你可以分析一下那个call的
2012-10-6 14:43
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
问下我只Hook了present,导致游戏窗口内某些区域贴图丢失是怎么回事?另外用
D3DXSaveSurfaceToFileInMemory得到的数据流指针如何操作?比如D3DXIFF_BMP类型
怎么关联位图的句柄,及像素操作等..本人刚接触,好多不懂!
2012-10-6 17:57
0
游客
登录 | 注册 方可回帖
返回
//