Capturing Justice Online Mobile(逆水寒手游) with RenderDoc Pro

How RenderDoc Pro Solved a DirectComposition and Private DXGI Crash in nshm.exe

The desktop client of Justice Online Mobile (逆水寒手游) uses a Unity, D3D11, DXGI, and DirectComposition presentation stack. Instead of presenting through a conventional game swap chain alone, The render pipeline exchanges graphics objects with the Windows composition runtime during startup.

Earlier capture attempts could inject successfully, yet the client still crashed before rendering its first stable frame. RenderDoc Pro required deeper compatibility with the private DComp/DXGI path used by the game.

Inside the Crash Investigation

The most useful dump stopped in CDXGIBaseAdapter::InternalGetAdapterDesc, reached through CDXGITelemetryHelper::LogCreateSwapChainForCompositionEvent and CDXGIFactory::CreateSwapChainForComposition. Other runs advanced into UnityPlayer.dll and failed while creating a D3D11 render-target view. Both signatures appeared during the same composition initialization window.

Assembly tracing and interface diagnostics showed a chain involving IDXGIDevice, IDXGIAdapter, IDXGISwapChain1, CDXGIBaseAdapter, composition swap-chain telemetry, and several OS-private interface families:

IDXGIDevice
{54EC77FA-1377-44E6-8C32-88FD5F44C84C}

IDXGIAdapter
{2411E7E1-12AC-4CCF-BD14-9798E8534DC0}

Private D3D/DXGI families: 
26C5DC23-..., 
B898D4FD-...,
9B7E4A00-..., 
F13EBCD1-...

The public DCompositionCreateDevice, DCompositionCreateDevice2, and DCompositionCreateDevice3 exports did not describe the whole route. Windows continued through internal object negotiation, private QueryInterface traffic, adapter metadata, composition-surface creation, and DXGI swap-chain handoff.

That finding narrowed the problem to the compatibility boundary between DirectComposition and DXGI rather than Unity’s rendering code.

Complete DComp and Private DXGI Compatibility

RenderDoc Pro now provides complete coverage for the DirectComposition-internal DX object path, together with the private DXGI interface implementation required by this workflow.

The implementation covers composition device negotiation, private interface forwarding, DXGI device and adapter relationships, swap-chain creation, back-buffer ownership, COM identity, and lifetime management. D3D11, D3D12, and DXGI capture activation is coordinated whenever those APIs share presentation objects.

Unity continues to receive the D3D interfaces it expects, while DComp and DXGI internal consumers receive compatible runtime objects. RenderDoc Pro can therefore capture the graphics workload without breaking the private composition contract used during startup.

Modern Windows applications increasingly combine game engines with composition surfaces, overlays, embedded views, and private runtime interfaces. RenderDoc Pro is built for these cases, where successful DLL injection is only the beginning of reliable graphics capture.

Legal Notice

Only inspect software that you own or are authorized to debug. Users remain responsible for applicable laws, game terms, platform policies, and license agreements. Product names and trademarks belong to their respective owners. This independent technical report does not imply endorsement by the game publisher, Unity Technologies, or Microsoft.

RenderDoc Pro is an independent commercial fork based on RenderDoc under the MIT License. Original copyright notices and third-party acknowledgements remain applicable.

More case studies are available in the RenderDoc Pro Tutorials.


guest

0 评论
最旧
最新 最多投票