Skip to content

Commit 54bd115

Browse files
committed
Ready. Set. GO!
0 parents  commit 54bd115

21 files changed

+2282
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
uniject_gui
2+
target/

Cargo.lock

Lines changed: 230 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[workspace]
2+
members = ["uniject", "uniject_console"]

Readme.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Uniject
2+
3+
> [!NOTE]
4+
> Most of the Readme has been taken 1:1 from SharpMonoInjector since Uniject does the exact same!
5+
6+
Uniject is a tool for injecting assemblies into Mono embedded applications, commonly Unity Engine based games, written in Rust. It is a rewrite of the [SharpMonoInjector](https://github.com/warbler/SharpMonoInjector/) tool, offering the same functionality.
7+
8+
The target process _usually_ does not have to be restarted in order to inject an updated version of the assembly. Your unload method must destroy all of its resources (such as game objects).
9+
10+
Uniject 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.
11+
12+
Both x86 and x64 processes are supported.
13+
14+
In order for the injector to work, the load/unload methods need to match the following method signature:
15+
16+
```csharp
17+
static void Method()
18+
```
19+
20+
### Upcoming GUI Version
21+
22+
A GUI version of Uniject is currently in development and will be released very soon.
23+
24+
### Example Assemblies
25+
26+
You can find example assemblies to use with Uniject at the SharpMonoInjector Repository: [here](https://github.com/warbler/SharpMonoInjector/tree/master/src/ExampleAssembly)
27+
28+
These example assemblies demonstrate how to properly structure your code for injection and provide a starting point for creating your own assemblies.
29+
30+
### Releases
31+
32+
In the releases section, you will find the console version available for download.
33+
34+
### Credits
35+
36+
Uniject was created as a learning project to explore different injection techniques and to provide an improved version of the original SharpMonoInjector tool.
37+
38+
If you like this project, please also check out the original repo [here](https://github.com/warbler/SharpMonoInjector).
39+
40+
Credits go to [warbler](https://github.com/warbler).

uniject/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target

0 commit comments

Comments
 (0)