Skip to content

Commit

Permalink
Ready. Set. GO!
Browse files Browse the repository at this point in the history
  • Loading branch information
Dan0xE committed May 19, 2024
0 parents commit 54bd115
Show file tree
Hide file tree
Showing 21 changed files with 2,282 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
uniject_gui
target/
230 changes: 230 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[workspace]
members = ["uniject", "uniject_console"]
40 changes: 40 additions & 0 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Uniject

> [!NOTE]
> Most of the Readme has been taken 1:1 from SharpMonoInjector since Uniject does the exact same!
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.

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).

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.

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:

```csharp
static void Method()
```

### Upcoming GUI Version

A GUI version of Uniject is currently in development and will be released very soon.

### Example Assemblies

You can find example assemblies to use with Uniject at the SharpMonoInjector Repository: [here](https://github.com/warbler/SharpMonoInjector/tree/master/src/ExampleAssembly)

These example assemblies demonstrate how to properly structure your code for injection and provide a starting point for creating your own assemblies.

### Releases

In the releases section, you will find the console version available for download.

### Credits

Uniject was created as a learning project to explore different injection techniques and to provide an improved version of the original SharpMonoInjector tool.

If you like this project, please also check out the original repo [here](https://github.com/warbler/SharpMonoInjector).

Credits go to [warbler](https://github.com/warbler).
1 change: 1 addition & 0 deletions uniject/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target
Loading

0 comments on commit 54bd115

Please sign in to comment.