hksoobe 2018-02-25 04:18
浏览 1255
已结题

dx11 hook 游戏后如何得到游戏的Shader bytecode

当我们用DX11画一个东西时要传入VS 过程是这样子的
CompileShaderFromFile('Tutorial04.fx', 'VS', 'vs_4_0', pVSBlob) ;
g_pd3dDevice.CreateVertexShader(pVSBlob.GetBufferPointer(), pVSBlob.GetBufferSize(), nil, g_pVertexShader);
g_pImmediateContext.VSSetShader(g_pVertexShader, nil, 0);

如果我们HOOK进游戏的DrawIndexed函数想在里面得到游戏的VS对象
g_Real_ImmContext.VSGetShader(game_pVertexShader,......)
现在得到VS对象game_pVertexShader了但如何得到他的数据
也就是传入的pVSBlob.GetBufferPointer(), pVSBlob.GetBufferSize(),
如何通过game_pVertexShader得到pVSBlob.GetBufferPointer(), pVSBlob.GetBufferSize(),

在DX9下可以可以很容易通过VS对象ppShader得到shader数据_Code,_CodeLen
Device.GetVertexShader(ppShader);
ppShader.GetFunction(nil,_CodeLen);
GetMem(_Code,_CodeLen);
ppShader.GetFunction(_Code,_CodeLen);

有大牛知道在DX11下如何得的吗?谢谢!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器