Preface
谁抓过谁知道。启动带 DRM 的游戏通常需要一个或多个启动器的支持(Steam,R* 等等)
这种情况下 RenderDoc 直接启动 EXE 本身只会拉起启动器,然后由常驻启动器本身启动游戏进程
反思RenderDoc帧本身需要在设备初始化之前就已经hook上——保证这一点的方法其实相当多:
从自带的全局appinit/Global Hook方法(上图),利用 Steamless 自制学习版绕过 Steam 到魔改 RenderDoc hook 过程 + 子进程 Capture,殊途同归
不过代价有大有小(且通常不小…),碰上一些难缠的DRM也容易暴毙
但 PC 玩家的创造力是无穷的——接下来介绍的手段将适用于 Windows 平台一切存在第三方修改/MOD的游戏
利用现成 ASI Loader
相当多 PC游戏 MOD 社区的起点都是这里。是否记得曾今打过 MOD 的后缀经常是 .asi?
他们只是更换了后缀名的.dll。在此,如果你的目标游戏用了.asi后缀,或者类似DLL Loader本身,你可以直接(注:假设Game为64位):
找到你 RenderDoc 安装目录下的
renderdoc.dll
和其他 ASI/DLL Mod 一样,复制到游戏目录并更名为
renderdoc.asi以大表哥2为例

正常启动游戏,左上角应时刻都显示着 RenderDoc Hud

此时可选的,你可以启动 RenderDoc,然后在
File > Attach to Running Instance中找到,并同正常抓帧流程一样处理不过即使不启动也是可以抓的:直接按下
F12,你将在%TEMP%/RenderDoc中找到你的replay

照常打开 Replay 即可

手动注入 ASI Loader
有些时候可能社区并没有在MOD 注入方面做太多工作。如果没有类似的DLL Mod Loader,对没有刻意阻止注入的Game(如反作弊、反篡改),自己动手也值得一试
以极乐迪斯科为例(64位,Unity)。放到DIE中看看UnityPlayer.dll Imports(注:Unity 游戏应该通用)

熟悉的version.dll。找到对应的Ultimate-ASI-Loader DLL伪装(即同样地,64位version.dll),同更名后的renderdoc.dll -> renderdoc.asi复制到game根目录

和之前过程一样操作即可。注意DLL替换若不成功可尝试更换其他伪装选项。其次,也值得怀疑目标game似乎否存在反篡改——届时自求多福…

注:如图为纹理流送Buffer,实现是Amplify Texture 2。设定集中也有提及:

Tips
- 注入成功但Capture/Replay掉设备可以考虑降低分辨率
- Die分析完别忘了关掉= =||