Latest Version: 3.6.1
What’s the Visual C++/DirectX depedency installer?
If Extreme Injector detects that a hack you are adding requires MSVCR<version>.dll, MSVCP<version>.dll or d3dx9_<number>.dll and you do not have it installed, it will offer to automatically download the correct version (x86 or x64) from the Microsoft website and install it for you.
If it detects the hack you are adding requires MSVCR<version>D.dll or MSVCP<version>D.dll, it will automatically download the correct version (x86 ox x64) and save it to the correct folder (C:\Windows\system32 or C:\Windows\SysWOW64). This is all so people don’t complain about non-working hacks and don’t end up downloading and saving files to the wrong place.
What can I use the advanced module options for?
The addition of the ability to execute exported functions from a DLL opens up opportunities for a brand new range of hacks. In particular, it makes injecting .NET DLLs easier than ever. That’s right, you can code your hacks in C# and VB.NET and inject them straight into a game or process.
This is all possible with the help of a library called Unmanaged Exports by Robert Giesecke. Simply add the NuGet package to your Class Library project. To add the NuGet package, either use the command shown on the link provided or search for Unmanaged Exports under Project > Manage NuGet Packages > Online > Search. Please note if you are using Visual Studio 2010 or older you need to install NuGet first because it’s not built in.
Okay, so now I went ahead and made a function to represent the starting point of my hack, this is what it looks like:
Note that I had to add a reference to System.Windows.Forms to use the MessageBox class. Also note that I specified the StdCall convention. This is very important. I recommend you use either Cdecl or StdCall, it doesn’t matter which one because Extreme Injector supports both.
NOTE: When building your DLL, make sure to choose to build it as a x86 or x64 DLL. Obviously if the game or process you are intending it for is 32-bit, build it as x86. If you leave it as AnyCPU (default), the export will not work correctly! You can adjust this under Project > Properties > Build (C#) or Project > Properties > Compile (VB).
Now that I have built my DLL, I can now add it to the DLL list in Extreme Injector and configure the advanced options (it’s the … button next to the DLL).
Notice how the injector automatically detected our Entry function. Amazing right? 😀 If you wanted to, you could add extra parameters/values that can be passed to the function but that’s entirely optional. Our Entry function has no parameters so we cannot add anything. Make sure that the calling convention is the same as the one in your code.
Now, make sure that you have not selected manual map injection because it is not supported with .NET libraries. Now hit Inject and voila!