
OBSのgraphics-hook32.dllのD3D9 Presentポインタをフックし、アンチチートのゲームキャプチャ検出を回避するストリームプルーフなレンダリングを実現する方法を示します。
私のものではありません。保存用です。 https://www.unknowncheats.me/forum/anti-cheat-bypass/501609-obs-graphics-hook32-hook.html
これまでに多くの種類のフッキングを研究してきましたが、この種の手法はストリームプルーフなレンダリングを実現するために利用できるため、私の注目を集めました。
そこで、これを初心者の方々と共有したいと思います。

「graphics-hook32.dll + 32DC8」がターゲットアドレスであり、IDA や https://github.com/obsproject/obs-st...pture.cpp#L651 ではこのように表示されるはずです。

その後は、ポインタを置き換えるだけです(従来の方法)。 mov eax, Hook_Present_Addr なので Hook_Present_Addr = &Present_hook ??? 利益 これで P2C の準備完了 KEKEKEKEKEKW
void MainThread()
{
while (!obsBase) // graphics-hook32.dll がロードされていないか確認
{
obsBase = (DWORD)GetModuleHandleA(XorStr("graphics-hook32.dll"));
if (!obsBase)
Sleep(200);
else
isOBSFound = true;
}
if (isOBSFound)
{
renderOBSPresent = obsBase + 0x32DC8;
while (!*reinterpret_cast<uintptr_t*>(renderOBSPresent))
{
Sleep(200);
}
OrigPresent = SwapPointer<Present_t>((uintptr_t)renderOBSPresent, (uintptr_t)&Hooked_Present);
}
}
置き換えている関数ポインタは、IDA 上に表示される「RealPresent」であり、present_begin ではありません(RealPresent 関数は .data ポインタです)。present_begin をフックしても同じ結果を得ることができます。これは obs の x64 版にも適用できます。
注: これはゲームキャプチャと d3d9 ゲームでのみ動作します