Skip to content

Instantly share code, notes, and snippets.

@mgeeky
Created November 11, 2019 20:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mgeeky/7f8938c36062dbffb5c87b51bbc73e67 to your computer and use it in GitHub Desktop.
Save mgeeky/7f8938c36062dbffb5c87b51bbc73e67 to your computer and use it in GitHub Desktop.
Getting rid of Razor Bloatware to only have it's core service running. This core service will then serve the purpose of interpreting Mouse extra buttons. Tested on Synapse3

Getting rid of Razor bloatware

I've got myself a decent Razor mouse coming with 4 extra buttons on it's sides. Two of them are recognized by the Windows system as XButton1 and XButton2 (AutoHotKey's nomenclature), whereas two other ones are only properly recognized and translated by Razor's service executable.

Unfortunately, this service - located here:

C:\Program Files (x86)\Razer\Synapse3\Service\Razer Synapse Service.exe

Spawns additional unwanted bloatware acting as Razor's Synapse packages for fancy highlights and game sensing to adjust hardware profiles.

Razer Synapse 3.exe, C:\Program Files (x86)\Razer\Synapse3\WPFUI\Framework\Razer Synapse 3 Host\Razer Synapse 3.exe
GameManagerService.exe, C:\Program Files (x86)\Razer\Razer Services\GMS\GameManagerService.exe
RazerCentralService.exe, C:\Program Files (x86)\Razer\Razer Services\Razer Central\RazerCentralService.exe
Razer Central.exe, C:\Program Files (x86)\Razer\Razer Services\Razer Central\Razer Central.exe
CefSharp.BrowserSubprocess.exe, C:\Program Files (x86)\Razer\Razer Services\Razer Central\CefSharp.BrowserSubprocess.exe

I never wanted any of that, so I've made my fixed to get rid of necessary executables from getting loaded.

Solution is extremely simple:

  1. We need to replace in-place two executables, namely:
  • GameManagerService.exe: C:\Program Files (x86)\Razer\Razer Services\GMS\GameManagerService.exe
  • RazerCentralService.exe: C:\Program Files (x86)\Razer\Razer Services\Razer Central\RazerCentralService.exe
  1. To do that, we can compile an utterly simple application like that one:
int main(){return 0;}

Using gcc compiler coming from MinGW packages:

cmd> gcc main.c -o main.exe
  1. Having that, either kill every Razor* processes and we stop its services from running - to have above listed two executables not loaded, or we suspend process named:
  • Razer Synapse 3.exe: C:\Program Files (x86)\Razer\Synapse3\WPFUI\Framework\Razer Synapse 3 Host\Razer Synapse 3.exe and then having that process suspended (via Process Hacker2) we attempt to kill every other Razor-related process running in our system.
  1. Having that done, we copy our main.exe little replacement into following locations:
C:\Program Files (x86)\Razer\Razer Services\GMS\GameManagerService.exe
C:\Program Files (x86)\Razer\Razer Services\Razer Central\RazerCentralService.exe

Files that are to be replaced can have their name changed into something other, such as "GameManagerService2.exe"

As soon as those two files are substituted - we can resume our Razer Synapse 3.exe process or just have the Synapse start itself.

  1. End result will be following: Only one Razor-related process are going to be spawned during startup and it's going to be Razor Synapse's core service process.

That process will be able to make sense of our extra button USB-signals and reinterpret them according to our previously set mapping.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment