首页
社区
课程
招聘
[求助]想hook d3d8 这个DLL,让重新彻底停止绘画, 这样是否能降低内存呢?
发表于: 2018-1-21 03:19 5379

[求助]想hook d3d8 这个DLL,让重新彻底停止绘画, 这样是否能降低内存呢?

2018-1-21 03:19
5379
[求助]想hook d3d8 这个DLL,让重新彻底停止绘画, 这样是否能降低内存呢?

最近玩了个小游戏,多开挺废内存的,于是想收到开关d3d8工作状态。
应该hook那些API呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这游戏是使用d3d8.dll的、加载的DLL  有  ddraw.dll    d3d8.dll    d3d8thk.dll

hook那个api才能暂停合继续渲染呢?
2018-1-21 15:07
0
雪    币: 209
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样不能降低内存占用,只能降低显卡显存占用。

看游戏的DX版本,Hook  DX函数,禁止游戏绘制画面
hook  d3d9.dll的Direct3DCreate9函数得到LPDIRECT3D9指针,
通过此指针hook其createdevice成员函数得到IDirect3DDevice9接口,
再hook此接口的present成员函数就可以达到黑屏的目的

DirectX9  3D游戏(d3d9.dll):

IDirect3DDevice9::Clear    //清除缓冲区
IDirect3DDevice3::BeginScene    //开始场景
IDirect3DDevice3::EndScene    //结束场景
IDirect3DDevice9::Present    //将后台缓冲区已绘制好的内容提交到前台并显示出来

绘制游戏界面(渲染函数)必须在BeginScene和EndScene之间,然后通过Present显示出来。
2018-1-21 19:43
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
...

2018-1-23 01:54
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
惊电 这样不能降低内存占用,只能降低显卡显存占用。 看游戏的DX版本,Hook DX函数,禁止游戏绘制画面 hook d3d9.dll的Direct3DCreate9函数得到LPDIRECT3D9指 ...
.
d3d8 的BeginScene 序号是多少?
现在3个函数地址我都拿到了,怎么弄呢?
执行函数直接返回0 可以吗?
2018-1-29 22:05
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
d3d钩法参考OBS  Studio,github有源码
降低CPU占用就加Sleep就行
2018-1-29 23:40
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hzqst d3d钩法参考OBS Studio,github有源码 降低CPU占用就加Sleep就行
现在情况有点特殊。
1、BeginScene  、EndScene函数的地址序号应该是  34/35;    挂钩后就报错,可能是我搜到的这序号不对。
2、hook    Present  函数,在  NewPresent  里什么都不做,直接返回。这样,他会比平时多占用U、
3、这黑屏停止渲染的具体步骤我还没搞懂。

4、是否:在  Present  内直接返回的前提下调用  Clear  清除缓存呢?
Clear所在的序号是多少?
2018-1-30 00:35
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我在      NewPresent      内执行  延时API      程序出现卡顿。
2018-1-30 00:36
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
9
ffashi 我在 NewPresent 内执行 延时API 程序出现卡顿。
卡是肯定的    你又想降低CPU占用    又想不卡  天底下哪有这么好的事情?
2018-1-30 12:35
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
hzqst 卡是肯定的 你又想降低CPU占用 又想不卡 天底下哪有这么好的事情?
在我没有hook      Present      之前    CPU只有  1-5%的占有率,主要是显卡占用多。
          我          hook      Present      之后    CPU  增多,到  40%左右,明显占用了1个虚拟机的U啊。
          我在            hook      Present      中不采用直接返回,而是  使用  延时API。  但程序出现卡顿了。
2018-1-31 20:08
0
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
解决了,
原理是因为我在hook    Present  后,什么也没做。所以是  0  延时的死循环。只要加个延时50  就行了
2018-2-19 04:41
0
游客
登录 | 注册 方可回帖
返回
//