Sharp mono injector как пользоваться
Last Achievements
SharpMonoInjector wh0am1 Mod (Fixed and Updated)
Updated SharpMonoInjector to fix the process detection bug, x86/x64 detection bug fixed, and a couple fixes to make it more efficient. No modifications to his injection engine other than some added error checking. Built off Net 4.0 for those that are still on Win7 and can’t run NetStandard 2.0. Since he didn’t build-in any privilege checking I added some checks and the GUI version will automatically restart as Admin. The console version you’ll get a warning and instructions on to ‘fix’ the game. Go to game .exe and Properties->Compatibility tab. Uncheck the "Run this program as Administrator" box. Some dev’s think this little trick of ‘elevating the privileges’ will stop most people from injecting unless the injector is also run as admin. Unchecking this box will make the game an regular user process again. Or just run the injector as Admin. This is why I like syscall’s and ACP techniques.
This was a great Unity injector until that nasty process detection and x86/64 bug, now it’s actually usable again. I still prefer my injector though since I use syscalls. I might be partial, but either way Warbler the original creator of SharpMonoInjector deserves credit for his work.
Update v2.5 Released — 10-10-2021
Touched up a couple of UI and injector thing’s. Added support for IL2Cpp detection and injection. If your game goes IL2Cpp now you’ll know. It’s still possible to inject though see the IL2Cpp help for how.
Sharp mono injector как пользоваться
SharpMonoInjector is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games. The target process usually does not have to be restarted in order to inject an updated version of the assembly. Your unload method must to destroy all of its resources (such as game objects).
SharpMonoInjector works by dynamically generating machine code, writing it to the target process and executing it using CreateRemoteThread. The code calls functions in the mono embedded API. The return value is obtained with ReadProcessMemory.
Both x86 and x64 processes are supported.
In order for the injector to work, the load/unload methods need to match the following method signature:
In releases, there is a console application and a GUI application available.
SharpMonoInjector’s People
Contributors
Stargazers
Watchers
Forkers
SharpMonoInjector’s Issues
Failed to inject assembly when there is a reference to another assembly
My current project always returns NULL from mono_class_from_name().
The project is built with .NET Framework v4.6.1 and for Any CPU (like the example assembly), and I’ve used the GUI app to test injecting it into a 32-bit Unity game. I’ve got the namespace (WhiteNoise.Cheat.Loader.Models), class name (Loader), and method (Load) correct, but the injection is never successful.
This is what my loading class looks like:
Only part of a ReadProcessMemory or WriteProcessMemory request was completed
For some reason application crashes when I click Refresh while dnSpy v6.0.5 (64-bit, .NET Core) is open.
Example assembly problem
So I used Visual Studio Installer to include the game development with unity workload and I even added the optional «Unity 2017.2 64-bit Editor». So then I opened the example assembly but the reference to UnityEngine was broken somehow? It did not automatically get the reference right so I added it manually «C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll». So then the example assembly compiles fine but the .dll is only 4kb? That can not be right? It also just crashes on injection so something must be wrong. Or am I using the wrong version of the UnityEngine.dll compared to the process I am injecting to? I don’t know if they should be the same?? I also tried the «Embed Interop Types» but then it won’t compile because of the errors.
Adding x64 support?
This works like a charm for x86 applications, for x64 it throws an error :/ looks like fasm.net only works for x86. Can x64 support be added?
Can't find any active process
I’ve been running Enter the Gungeon on the background, but the GUI injector is unable to recognize it as a process, and when I click Refresh, the injector just crashes.
Unloading issue
thanks for this cool tool. It works very good. However for the comfort I want to use the unloading too. Unloading in general seems to work just fine. It is at least calling the Unload() method I implemented in my dll which removes the GameObject.
However if I try to inject again, then the game crashes and Sharp Mono Injector says: Arithmetic Overflow Exception.
Do I have to anything else in my dll to unload?
ERROR: Injection failed: GetImageFromAssembly() = 0
When I try to inject, the game crashes and I get this error message.
I’ve looked at the source to try and find out what’s causing it but it’s beyond me.
Can anyone help?
Crashes on Windows 10
Hi there, i am having issues when injecting on Windows 10, the game client suddenly hard crashes. This does not happen on Windows 7 though.. any ideas?
Sharp mono injector как пользоваться
SharpMonoInjector is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games. The target process usually does not have to be restarted in order to inject an updated version of the assembly. Your unload method must to destroy all of its resources (such as game objects).
SharpMonoInjector works by dynamically generating machine code, writing it to the target process and executing it using CreateRemoteThread. The code calls functions in the mono embedded API. The return value is obtained with ReadProcessMemory.
Both x86 and x64 processes are supported.
In order for the injector to work, the load/unload methods need to match the following method signature:
In releases, there is a console application and a GUI application available.
SharpMonoInjector’s People
Contributors
Stargazers
Watchers
Forkers
SharpMonoInjector’s Issues
Failed to inject assembly when there is a reference to another assembly
My current project always returns NULL from mono_class_from_name().
The project is built with .NET Framework v4.6.1 and for Any CPU (like the example assembly), and I’ve used the GUI app to test injecting it into a 32-bit Unity game. I’ve got the namespace (WhiteNoise.Cheat.Loader.Models), class name (Loader), and method (Load) correct, but the injection is never successful.
This is what my loading class looks like:
Only part of a ReadProcessMemory or WriteProcessMemory request was completed
For some reason application crashes when I click Refresh while dnSpy v6.0.5 (64-bit, .NET Core) is open.
Example assembly problem
So I used Visual Studio Installer to include the game development with unity workload and I even added the optional «Unity 2017.2 64-bit Editor». So then I opened the example assembly but the reference to UnityEngine was broken somehow? It did not automatically get the reference right so I added it manually «C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll». So then the example assembly compiles fine but the .dll is only 4kb? That can not be right? It also just crashes on injection so something must be wrong. Or am I using the wrong version of the UnityEngine.dll compared to the process I am injecting to? I don’t know if they should be the same?? I also tried the «Embed Interop Types» but then it won’t compile because of the errors.
Adding x64 support?
This works like a charm for x86 applications, for x64 it throws an error :/ looks like fasm.net only works for x86. Can x64 support be added?
Can't find any active process
I’ve been running Enter the Gungeon on the background, but the GUI injector is unable to recognize it as a process, and when I click Refresh, the injector just crashes.
Unloading issue
thanks for this cool tool. It works very good. However for the comfort I want to use the unloading too. Unloading in general seems to work just fine. It is at least calling the Unload() method I implemented in my dll which removes the GameObject.
However if I try to inject again, then the game crashes and Sharp Mono Injector says: Arithmetic Overflow Exception.
Do I have to anything else in my dll to unload?
ERROR: Injection failed: GetImageFromAssembly() = 0
When I try to inject, the game crashes and I get this error message.
I’ve looked at the source to try and find out what’s causing it but it’s beyond me.
Can anyone help?
Crashes on Windows 10
Hi there, i am having issues when injecting on Windows 10, the game client suddenly hard crashes. This does not happen on Windows 7 though.. any ideas?
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
warbler / SharpMonoInjector Public archive
A tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games
License
warbler/SharpMonoInjector
Name already in use
- Local
- Codespaces
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
SharpMonoInjector is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games. The target process usually does not have to be restarted in order to inject an updated version of the assembly. Your unload method must to destroy all of its resources (such as game objects).
SharpMonoInjector works by dynamically generating machine code, writing it to the target process and executing it using CreateRemoteThread. The code calls functions in the mono embedded API. The return value is obtained with ReadProcessMemory.
Both x86 and x64 processes are supported.
In order for the injector to work, the load/unload methods need to match the following method signature:
In releases, there is a console application and a GUI application available.
About
A tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games
Sharp mono injector как пользоваться
Hello.
After some trial and error, I figured out how to inject assemblies into Mono embedded processes and I’m going to share the method here.
I am using the Process.NET library written by lolp1 to invoke functions in the target process, and Fasm.NET written by ZenLulz as the assembler that Process.NET requires.
The target process does not have to be restarted in order to inject an updated version of the assembly. Instead, you need to properly eject the assembly which this tool simplifies, and then inject again.
Compiled binaries + source code can be downloaded from the download section.
The source code is also available on GitHub.
Below is a much simplified version of the source code for those that want a quick look.
Sharp mono injector как пользоваться
Представляю вашему вниманию обновленный инжектор SharpMonoInjector, в котором исправили ошибку обнаружения процесса, исправлена ошибка обнаружения на x86 / x64 и еще несколько исправлений, чтобы сделать его более эффективным. Инжектор создан на основе Net 4.0 для тех, кто все еще использует Win7 и не может запустить NetStandard 2.0.
Это был отличный инжектор Unity до тех пор, пока он не стал Detected и не стали сыпаться и ошибки x86 / 64, а теперь его снова можно использовать. Рекомендую как минимум попробовать данный инжектор, особенно если вы играете в игру Muck.
warbler / sharpmonoinjector Goto Github PK
SharpMonoInjector is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games. The target process usually does not have to be restarted in order to inject an updated version of the assembly. Your unload method must to destroy all of its resources (such as game objects).
SharpMonoInjector works by dynamically generating machine code, writing it to the target process and executing it using CreateRemoteThread. The code calls functions in the mono embedded API. The return value is obtained with ReadProcessMemory.
Both x86 and x64 processes are supported.
In order for the injector to work, the load/unload methods need to match the following method signature:
In releases, there is a console application and a GUI application available.
sharpmonoinjector’s People
Contributors
Stargazers
Watchers
Forkers
sharpmonoinjector’s Issues
Only part of a ReadProcessMemory or WriteProcessMemory request was completed
For some reason application crashes when I click Refresh while dnSpy v6.0.5 (64-bit, .NET Core) is open.
Injector is crashing the game
Here is the output of monoinjector
I am trying it on the game stationeers
Access Denied when enumerating process modules
Using the following parameters it spits out an error saying ‘Access Denied when enumerating process modules’: smi.exe inject -p «7DaysToDie.exe» -a 7dt2.dll -n _7dt2 -c Loader -m Init
I ran cmd as an administrator and the target process isn’t ran as an administrator.
How to run mono_runtime_invoke with parameters?
I’ve noticed the library only supports injecting with no parameters in Load method. However, I’m trying to pass a string to method Load in my Loader. How do I achieve this with some modification of the library to accept a method with parameters? Thank you!
Can't find any active process
I’ve been running Enter the Gungeon on the background, but the GUI injector is unable to recognize it as a process, and when I click Refresh, the injector just crashes.
Failed to inject assembly when there is a reference to another assembly
My current project always returns NULL from mono_class_from_name().
The project is built with .NET Framework v4.6.1 and for Any CPU (like the example assembly), and I’ve used the GUI app to test injecting it into a 32-bit Unity game. I’ve got the namespace (WhiteNoise.Cheat.Loader.Models), class name (Loader), and method (Load) correct, but the injection is never successful.
This is what my loading class looks like:
mono-2.0-bdwgc.dll
Any idea how to get this to work with ‘mono-2.0-bdwgc.dll’?
I’ve tried adjusting the dll it looks for but no avail and doesn’t find any of the processes I’m looking for.
I fails on the line..
if (!Native.EnumProcessModulesEx( process.Handle, modulePointers, 0, out var bytesNeeded, ModuleFilter.LIST_MODULES_ALL))
and always returns ‘IntPtr.Zero’.
I know this game uses ‘mono-2.0-bdwgc.dll’ as I’ve been temporarily using a stand alone injector until I can integrate this into my code.
The console version of Sharp does not recognize any processes
Yesterday I tried to use the console interface of this injector, since the GUI version simply did not load the list of processes, it did not crash but no process appeared, so I tried with the console and then nothing, it is the same, I tried in different computers the same process and nothing, and yes, the executable.exe does not have spaces in case you are asked.
Anyway, any idea what might be going on?
help please
everytime i try to run an command i get this ‘smi.exe’ is not recognized as an internal or external command,
operable program or batch file. and this i swhat i typed in C:\Users\ninok>smi.exe inject -p unturned -a HInj.dll -n HInj -c Loader -m Load
Unloading issue
thanks for this cool tool. It works very good. However for the comfort I want to use the unloading too. Unloading in general seems to work just fine. It is at least calling the Unload() method I implemented in my dll which removes the GameObject.
However if I try to inject again, then the game crashes and Sharp Mono Injector says: Arithmetic Overflow Exception.
Do I have to anything else in my dll to unload?
Opens then closes
My issue is that whenever I open the console version, cmd opens up for an instant then immediately closes.
Could I get some help with this?
Adding x64 support?
This works like a charm for x86 applications, for x64 it throws an error :/ looks like fasm.net only works for x86. Can x64 support be added?
Injection failed: mono_class_from_name() returned NULL
So I’ve come across a rather interesting issue, and I have no idea how to actually resolve it.
Essentially I’ve just been testing injecting into a game process, and it was working fine initially, however after a few loads and unloads I started getting a mono_class_from_name error.
I’ve tested with a new project, still getting the same error.
This is the ‘loader’ class
And what happens when I attempt to inject (same result for either GUI or Console)
Something I have noticed is that if I name the Load method as Init , it «»»works»»» (nothing is actually injected but smi reports success).
In fact as I was typing this out it started working again (using Load as the class name)
Could .NET be caching something, because I was trying to load/unload immediately before, but now DEMO was closed for around 10 minutes before I attempted the same command on the same dll, and it worked
Example assembly problem
So I used Visual Studio Installer to include the game development with unity workload and I even added the optional «Unity 2017.2 64-bit Editor». So then I opened the example assembly but the reference to UnityEngine was broken somehow? It did not automatically get the reference right so I added it manually «C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll». So then the example assembly compiles fine but the .dll is only 4kb? That can not be right? It also just crashes on injection so something must be wrong. Or am I using the wrong version of the UnityEngine.dll compared to the process I am injecting to? I don’t know if they should be the same?? I also tried the «Embed Interop Types» but then it won’t compile because of the errors.
ERROR: Injection failed: GetImageFromAssembly() = 0
When I try to inject, the game crashes and I get this error message.
I’ve looked at the source to try and find out what’s causing it but it’s beyond me.
Can anyone help?
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
warbler / SharpMonoInjector Public archive
A tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games
License
warbler/SharpMonoInjector
Name already in use
- Local
- Codespaces
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
SharpMonoInjector
SharpMonoInjector is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games. The target process usually does not have to be restarted in order to inject an updated version of the assembly. Your unload method must to destroy all of its resources (such as game objects).
SharpMonoInjector works by dynamically generating machine code, writing it to the target process and executing it using CreateRemoteThread. The code calls functions in the mono embedded API. The return value is obtained with ReadProcessMemory.
Both x86 and x64 processes are supported.
In order for the injector to work, the load/unload methods need to match the following method signature:
In releases, there is a console application and a GUI application available.
About
A tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games