A modern, fully-featured Mono assembly injector with advanced stealth injection, real-time logging, profile management, Thunderstore and r2modman auto-detection, and a beautiful dark UI designed for both power users and security researchers.
This version builds upon v2.7.5 TheHolyOneZ Edition, retaining all previous features, while introducing an injection delay slider, system tray icon, auto-refresh process list, process status indicators, assembly version display, plus fixes for panel scrolling, injection field validation feedback, and auto-refresh reliability.
- The images are from an older version. The newest release and source code are actually the latest, so donβt be fooled. The source code and newest release are version 2.7.
SharpMonoInjector allows injecting managed assemblies into Mono-embedded applications (most commonly Unity Engine based games). Unlike traditional injectors, the target process does not need to restart after updating your assembly β ideal for debugging or runtime modding.
Both x86 and x64 architectures are supported.
- Injection delay slider β Set a 0β5000 ms delay before injection. Useful for games that need a moment to finish loading Mono.
- System tray icon β Minimize to tray. Double-click to restore, right-click for quick inject or exit.
- Auto-refresh process list β Enable a 5β60 s background scan timer so newly launched games appear automatically.
- Process status dots β Green/red indicator next to each process, polled every 3 seconds.
- Assembly version display β Version and architecture shown below the DLL path after selection.
- Panel scrolling β Mouse wheel now works anywhere over the inject panel, not just on the scrollbar.
- Validation feedback β Class/Method fields highlight red and show "Required" only after clicking Inject, with a status bar message naming the missing field.
- Auto-refresh reliability β Uses the same scan path as the manual Refresh button.
- Dependency injection crash β
InjectWithDependenciesno longer passes empty strings toInject(). - Log rotation β
DebugLog.txtcapped at 5 MB, rotated to.old.txt. - Right-click β Copy Path on recent assembly entries.
- Confirmation before Clear All.
-
Automatically detects standard BepInEx installations, Thunderstore Mod Manager, and r2modman profiles.
-
Chooses the safest injection method based on the environment:
- Standard Injection if no BepInEx detected
- Pipe Injection via Receiver Plugin if BepInEx + plugin found
-
Eliminates crashes caused by direct memory injection with BepInEx.
-
No manual folder setup needed β automatically finds the Receiver plugin.
-
Searches the following paths for
SharpMonoInjectorTheHolyOneZEdition.dll:GameFolder\\BepInEx\\plugins\\ AppData\\Roaming\\Thunderstore Mod Manager\\DataFolder\\<GameName>\\profiles\\Default\\BepInEx\\plugins\\ AppData\\Roaming\\r2modman\\profiles\\<GameName>\\BepInEx\\plugins\\ -
Automatically chooses the correct injection method based on detection.
-
Status messages guide the user about which method is used.
- Receiver plugin performs automatic two-phase injection to prevent Unity/Photon crashes.
- Logs clearly indicate each pass for better troubleshooting.
- Receiver ping test button to verify communication before injection.
- Improved error recovery when pipe communication fails.
- Thunderstore paths now properly scanned under AppData.
- Router remembers last successful injection path per game.
- Keyboard shortcuts for common actions to improve workflow efficiency.
- Built-in assembly inspector for examining loaded assemblies and their contents.
- Resolved issues with the eject functionality for better reliability.
- Reload button to refresh injected assemblies without restarting the process.
- Force remove button to forcibly eject assemblies if needed.
- Moved saved profiles from eject side to inject side for better organization.
- Redesigned the saved profiles UI with improved layout.
- Enhanced edit name profile UI for easier profile management.
- Toggle button for automatic dependency injection.
- Custom dependencies paths support:
- If auto-inject is enabled but no custom path is set, dependencies are searched in the same folder as the selected DLL.
- If a custom path is specified, dependencies are loaded from that folder.
- All new fields and options are saved via profile, fully integrated with the profile system.
Retained from v2.5 with all features intact:
- One-click toggle for all stealth features
- Visual indicator in the status bar
- Displays:
Injection successful (STEALTH MODE)upon completion
- Memory Randomization β Inserts 4β64 random NOP instructions before shellcode execution to prevent signature-based detection.
- Thread Hiding β Threads created with
CREATE_SUSPENDEDand hidden usingNtSetInformationThread, then safely resumed. - Execution Delay β Adds a 150ms randomized delay before injection begins.
- Debugger Detection β Detects if a debugger is attached to the target process.
- Code Obfuscation (Experimental, Disabled) β Encrypts shellcode with XOR and dynamically generates a decoder stub at runtime.
- Dark Interface: Deep black and gray tones with neon-green (
#00E676) accents - Rounded Corners: Subtle 4β8px rounding for buttons, inputs, and containers
- Card-Based UI: Inject/Eject/Logs/Profiles sections organized in raised cards (
#FF1E1E1Ebackground) - Smooth Animations: Hover transitions, click feedback, and fading indicators
- Premium Typography: Segoe UI font for modern legibility
- Resizable panels for log viewer and profile list
- Scroll synchronization across panels
- Improved scrollbar styling with green theme
- Persistent window size and layout memory between sessions
static void Method()Both load and unload methods should follow this signature. Unload method is optional.
- Select your target Mono process from the dropdown
- Browse and select your DLL assembly
- Enter Namespace, Class, and Method
- Optionally enable Stealth Mode
- Click INJECT
- Watch the Log Viewer for injection results
When stealth is active, the status bar will display:
Injection successful (STEALTH MODE)
- The GUI automatically requests elevation when needed.
- If denied, a prompt explains manual restart requirements.
The main window is divided into two primary sections: INJECT (left) and EJECT (right), providing a clear separation of injection and ejection operations.
- Process Selection: Dropdown list of running processes with refresh button (F9)
- Assembly Input: Text field for DLL path with browse button (Ctrl+O) and inspect button (Ctrl+I)
- Recent Assemblies: List of previously used assemblies with quick selection and removal options
- Saved Profiles: Enhanced profile management with detailed cards showing profile info, edit name (βοΈ), and delete (ποΈ) buttons
- Injection Fields: Namespace, Class, Method name inputs
- Stealth Mode: Toggle for advanced injection options
- Auto-Inject Dependencies: Toggle with custom dependency paths (one per line)
- Profile Management: Save current settings as profile or clear all recents
- Injected Assemblies: List of currently loaded assemblies
- Ejection Fields: Namespace, Class, Method inputs for unload
- Action Buttons: RELOAD (π) for hot-swapping, EJECT for standard removal, FORCE REMOVE (ποΈ) for problematic assemblies
- Real-time status updates with progress bar during operations
- Context menu for copying status text
- Credits link to developer
The application supports the following keyboard shortcuts for efficient operation:
| Shortcut | Action | Description |
|---|---|---|
| Ctrl+O | Browse for assembly file | Opens file dialog to select DLL/EXE assembly |
| Ctrl+I | Open assembly inspector | Launches the assembly introspection tool |
| F5 | Inject assembly | Executes injection with current settings |
| F6 | Eject assembly | Removes injected assembly using current settings |
| F9 | Refresh process list | Updates the dropdown with currently running processes |
| Ctrl+L | Open log viewer | Displays the comprehensive logging interface |
The Assembly Inspector (Ctrl+I) provides deep introspection of .NET assemblies:
- Load Assembly: Enter or browse to DLL path and load for analysis
- Namespace Browser: Hierarchical view of all namespaces in the assembly
- Class Explorer: Detailed class information with full names and inheritance
- Method Inspector: Complete method signatures, return types, and parameters
- Auto-Population: "Select Method" button automatically fills injection fields in main window
The Process Monitor (β‘ button) enables automated injection workflows:
- Watch List: Add processes by name to monitor for appearance
- Profile Assignment: Assign specific injection profiles to watched processes
- Auto-Injection: Toggle automatic injection when target processes start
- Notifications: Desktop alerts when monitored processes are detected
- Mono Game Filter: Option to scan only for Unity/Mono-based applications
- Background Monitoring: Continuous process scanning with configurable intervals
The Log Viewer (π button or Ctrl+L) provides comprehensive logging and debugging:
- Real-time Logs: Color-coded entries with timestamps and severity levels
- Search & Filter: Full-text search and level-based filtering (Info, Success, Warning, Error)
- Export Functionality: Save logs to file for analysis
- Context Actions: Right-click menu for copying individual log entries
- Persistent Storage: Logs saved to DebugLog.txt for session continuity
- Live, color-coded log viewer integrated into the GUI
- Search, filter, export logs
- Logs saved to
DebugLog.txtfor persistence - Logs all injection steps, stealth alerts, and profile actions
| Level | Color | Description |
|---|---|---|
| Info | Blue | Routine actions, refreshes, and general info |
| Success | Green | Successful injections/ejections |
| Warning | Orange | Debugger detected or minor recoverable issues |
| Error | Red | Injection or process-related failures |
- Create, save, load, rename, and delete multiple injection profiles per game
- Profiles store process name, assembly path, namespace, class, method, and stealth mode preference
- Load profiles instantly to auto-fill injector fields
- Rename βοΈ and delete β icons for convenience
- Watch processes automatically and trigger injections when targets appear
- Assign profiles to specific processes
- Filter for Mono/Unity-based games only
- Supports background monitoring with configurable polling interval
A companion BepInEx plugin that safely receives injections from SharpMonoInjector and handles them internally via named pipes.
- For Thunderstore/r2modman: drag the receiver DLL into:
AppData\\Roaming\\Thunderstore Mod Manager\\DataFolder\\<GameName>\\profiles\\Default\\BepInEx\\plugins\\SharpMonoInjectorTheHolyOneZEdition.dll
- Works even if not in a subfolder.
YourGame/BepInEx/plugins/SharpMonoInjectorTheHolyOneZEdition.dll
-
Communication: Named Pipe (
SharpMonoInjectorPipe_THOZE) -
Tasks:
- Listens for injection requests
- Blocks problematic components (PhotonView)
- Loads DLL safely into the game
- Performs automatic double-injection
-
Logs:
SmiReceiverLog.txtandBepInEx/LogOutput.log
- "Connection timed out" β check game running and receiver DLL installed
- "Receiver not found" β plugin missing or in wrong folder
- "BepInEx detected! Receiver plugin required." β install DLL to BepInEx/plugins
- Check logs for
[BLOCKED] PhotonViewandDouble injection complete!
| Mode | Injection Time | Detection Risk |
|---|---|---|
| Normal | ~50β100ms | Higher |
| Stealth | ~250β350ms | Significantly Lower |
β BepInEx 5.4.x+ β Thunderstore (AppData-based profiles) β r2modman β Mono/Unity games
- Added comprehensive keybinds for improved workflow efficiency
- Assembly Inspector tool for deep introspection of .NET assemblies
- Fixed eject button functionality for reliable assembly removal
- Added reload and force remove buttons for advanced ejection options
- Moved saved profiles to inject side with redesigned UI and enhanced profile cards
- Enhanced edit name profile UI with improved user experience
- Auto-inject dependencies toggle with custom paths support (searches same folder if no custom paths set)
- Profile system integration for all new fields and options
- Process Monitor with automated injection workflows and background monitoring
- Enhanced Log Viewer with search, filtering, and export capabilities
- Improved UI layout with better organization and visual hierarchy
- Smart Injection Router with auto-detection
- Receiver Auto-Detection and ping verification
- Improved double-injection stability
- Enhanced Thunderstore path scanning
- Receiver test utilities and fallback recovery
- Minor bug fixes and reliability improvements
- Real-time log viewer and export
- Profile management
- Process monitor
- Extended stealth logging
- UI scaling and performance improvements
- Stealth Injection system
- Thread hiding, memory randomization, execution delay
- Dark theme UI overhaul
- Debugger detection
- wh0am1 Mod: Fixed x86/x64 detection and process bugs
- Warbler Original: Initial Mono injection implementation
- TheHolyOneZ β Visual overhaul, stealth system, UI redesign, logging, profiles, automation, Smart Router, and Thunderstore integration
- wh0am1 β Bug fixes and original modernization (UnknownCheats Thread)
- Warbler β Original SharpMonoInjector creator (GitHub)
Intended for educational, research, or personal modding use only. Do not use for cheating, bypassing anti-cheat systems, or unauthorized modification.
Retains same license as original SharpMonoInjector by Warbler.
Design, modernization, and enhancements by TheHolyOneZ README updated for v2.7.1 with comprehensive UI overview, keybinds, inspector tool, process monitor, enhanced log viewer, auto-inject dependencies, and profile system improvements.
