nvidia-patch/win/nvfbcwrp
Vladislav Yarmak 24b9586494 fix #391
2021-03-23 11:37:09 +02:00
..
.gitignore win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
framework.h win: nvfbcwrp: add sniffing and custom data spoofing code 2019-12-07 23:47:23 +02:00
nvfbcbody.asm win: fbc: 32bit compat code 2019-12-03 13:27:46 +02:00
nvfbcdefs.h win: nvfbcwrp: add sniffing and custom data spoofing code 2019-12-07 23:47:23 +02:00
nvfbcwrp_main.cpp win: nvfbcwrp: add sniffing and custom data spoofing code 2019-12-07 23:47:23 +02:00
nvfbcwrp.def win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
nvfbcwrp.sln win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
nvfbcwrp.vcxproj win: nvfbcwrp: add sniffing and custom data spoofing code 2019-12-07 23:47:23 +02:00
nvfbcwrp.vcxproj.filters win: nvfbcwrp: add sniffing and custom data spoofing code 2019-12-07 23:47:23 +02:00
nvfbcwrp.vcxproj.user win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
pch.cpp win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
pch.h win: fbc: implement wrapper for key injection 2019-12-02 20:54:18 +02:00
README.md fix #391 2021-03-23 11:37:09 +02:00

nvfbcwrp

Wrapper for NvFBC64.dll library which injects private keys into NvFBC_CreateEx calls in order to enable NvFBC on customer-grade hardware (like GeForce cards) for all NvFBC-targeted applications. It should work at least with applications built with Nvidia Capture SDK versions 5.0 to 7.1.

Usage

  1. Obtain nvfbcwrp64.dll and nvfbcwrp32.dll files. You may build them yourself with MSVS 2019 or download latest release here: nvfbcwrp64.dll, nvfbcwrp32.dll.
  2. Backup your %WINDIR\system32\NvFBC64.dll and %WINDIR\SysWOW64\NvFBC.dll files.
  3. Rename file %WINDIR\system32\NvFBC64.dll to %WINDIR\system32\NvFBC64_.dll
  4. Rename file %WINDIR\SysWOW64\NvFBC.dll to %WINDIR\SysWOW64\NvFBC_.dll
  5. Rename nvfbcwrp64.dll and put it to %WINDIR\system32\NvFBC64.dll (on the original place of renamed NvFBC64.dll library).
  6. Rename nvfbcwrp32.dll and put it to %WINDIR\SysWOW64\NvFBC.dll (on the original place of renamed NvFBC.dll library).
  7. Restart any applications using this library. That's it.

This procedure has to be repeated after any driver reinstall/update, so keep your copies of nvfbcwrp64.dll and nvfbcwrp32.dll files.

Advanced Usage

nvfbcwrp allows user to capture and replay privateData used by other NvFBC applications (like GeForce Experience, Shadow Play and so on). It may be useful if built-in privateData will render invalid for some reason. Wrapper recognizes two environment variables:

  • NVFBCWRP_DUMP_DIR - output directory for dumps of privateData sent by applications.
  • NVFBCWRP_PRIVDATA_FILE - name of file with privateData which should be used instead of default built-in vector. These files can be produced as output of NVFBCWRP_DUMP_DIR option. If file is not found or can't be loaded, default magic vector is used.

Hence, if default magic baked into nvfbcwrp doesn't work for you, you have to:

  1. Specify environment variable NVFBCWRP_DUMP_DIR in your configuration with path to existing writable directory. Here is a guide about environment variables edit. It's sufficient to add "user" environment variable.
  2. Run some NvFBC application with valid privateData keys and initiate recording session.
  3. Grab some output file and specify it's path in NVFBCWRP_PRIVDATA_FILE. At this point you can unset NVFBCWRP_DUMP_DIR to stop privateData capture.

3rd-party software

For some software (e.g Steam) it is also needed to add registry value to use NvFBC, which you can do by running:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm" /v NVFBCEnable /d 1 /t REG_DWORD /f

(reboot / driver restart required to take effect)