Commit Graph

41 Commits

Author SHA1 Message Date
keowu
d6caf05940 feat: Finish work on Anti-Debug + TrollReversers features.
- Ryujin is now fully capable of detecting debuggers from both userland and kernel land.
- Ryujin inserts its detection stub without breaking application logic.
- Ryujin supports two modes:
      - Troll – triggers a BSOD using a Microsoft Windows bug.
      - Normal – simply calls NtTerminateProcess when a debugger is detected.
- This implementation can be improved in the future to handle more advanced detection methods, but it's good for now.
2025-07-09 10:59:07 -03:00
keowu
ed224188f7 feat: Working on Anti-Debug + TrollReversers Insertion Stub Research
- Researching how to insert a safe stub to handle detections for anti-debugging and troll attempts as part of the TrollReversers feature.
- Currently, it only inserts a "Hello World" MessageBox in each procedure indicated to Ryujin.
- This stub is completely safe and does not break the original code logic or flow. It can be fully mutated and obfuscated when reanalyzing opcodes, making it fully compatible with all Ryujin features simultaneously.
2025-07-07 21:20:26 -03:00
keowu
bc265c6d6b feat: Begin working on AntiDebug + TrollReversers features
- Started working on the initial concept and base implementation for AntiDebug detection.
- The goal is to use stealthy techniques (similar to Themida) to detect debugging attempts.
- An additional feature is being developed to troll reverse engineers by triggering a forced BSOD upon detection, causing them to lose their analysis progress.
2025-07-04 16:39:43 -03:00
keowu
370e855413 feat: Fixing typos on README.md
- Fixing some typos on README.md
2025-07-04 09:33:11 -03:00
keowu
c678458745 feat: Begin writing README.md
- Create the Ryujin README.md with current features, planned features, demos, and more.
2025-07-03 20:55:55 -03:00
keowu
a574e90401 feat: Check for inputs in RyujinGUI
- Added validation to check for empty inputs in the RyujinGUI obfuscation run logic.
2025-07-03 20:07:47 -03:00
keowu
e17e54ef1e feat: Organize RyujinGUI project structure
- Aligning the RyujinGUI project structure with the main Ryujin project structure.
2025-07-03 19:41:42 -03:00
keowu
9d5c6fb06c feat: Improve RyujinGUI to support RyujinCore
- RyujinGUI now uses RyujinCore to properly obfuscate code with full configuration support.
- Added new Ryujin logo.
- Added new Ryujin banner.
- Improved UI design, components, and more.
2025-07-03 09:37:46 -03:00
keowu
6d146f06bf feat: Initialize Ryujin GUI with basic layout and functionality
- Set up base GUI project structure using wxWidgets.
- Implement main window with custom styles and fixed dimensions.
- Add input fields for EXE, PDB, and output paths.
- Include obfuscation options with styled checkboxes.
- Add procedure list with add/remove functionality.
- Implement progress bar and "Run Obfuscator" button.
- Bind events for file selection, procedure management, and obfuscation run.
2025-07-01 21:17:23 -03:00
keowu
b078160d6b feat: Complete RyujinConsole implementation with full CLI support
The implementation of RyujinConsole is now complete. Users can fully customize the obfuscation process using a wide range of command-line options.
- Added full command-line interface support for RyujinConsole.
- Users can now specify input and output paths, and provide a PDB file for symbol mapping.
- Supports various obfuscation techniques via flags:
  - --virtualize: Enables code virtualization.
  - --junk: Inserts junk code.
  - --encrypt: Encrypts the obfuscated code.
  - --iat: Enables Import Address Table obfuscation.
  - --random-section: Uses a randomized PE section for output.
  - --keep-original: Preserves the original code (does not remove it).
- Allows fine-grained control over which procedures to obfuscate via --procs.
- Includes a --help option that provides detailed usage information.
- Example usage is provided in the built-in help message.
2025-06-28 20:53:53 -03:00
keowu
3683e8dbba feat: Improved project structure, added Ryujin includer header, export definitions, and more.
- The Ryujin console can now include the Ryujin core through a dedicated header file.
- Exporting is now standardized using a definition file.
- The project's compiled output is now placed in a folder named compiled, organized by the desired configuration (Release or Debug).
- Some code organization improvements have been made.
2025-06-24 21:23:15 -03:00
keowu
cbd7fb67f7 feat: Independent "Ryujin Core as a library" for better usability
- Ryujin now includes a component called Core, where the main obfuscator logic resides. It functions as an independent library that can be used anywhere.
- RyujinConsole now operates by loading the RyujinCore library to run the obfuscator.
- This is a preparation step for additional Ryujin components, such as a future Ryujin GUI and more features like passes and advanced obfuscation options.
2025-06-22 13:48:30 -03:00
keowu
eb6d14c4f2 feat: Improve the "Encrypt Obfuscated Code" feature to use TeaDelKew for encryption
- The "Encrypt Obfuscated Code" feature is now complete, using a new encryption algorithm called TeaDelKew, which is based on XTEA, to encrypt all obfuscated code and decrypt it at the entry point before execution.
- Some code improvements were also made.
2025-06-21 19:52:37 -03:00
keowu
83a8d2a2b9 feat: Implement full logic for the "Encrypt Obfuscated Code" feature
- The encryption feature in Ryujin is now fully implemented and functional. Currently, it uses a simple XOR-based algorithm for encryption and decryption. This approach will be improved in the future to enhance security.
- The feature overrides the Original Entry Point (OEP) with a new stub that decrypts all obfuscated code at runtime, then transfers control to the original entry point to continue normal execution.
2025-06-20 16:01:10 -03:00
keowu
06d5d8751b feat: Base for implementing the "Encrypt obfuscated code" feature.
- Started working on the logic to obfuscate opcodes in the Ryujin section to prevent static analysis. This is just the initial groundwork for the feature.
2025-06-19 18:37:41 -03:00
keowu
52f5cb1b11 feat: Ryujin MiniVM encrypted constants
- Ryujin MiniVM can now hide its immediate constants and bytecode from static analysis.
2025-06-18 21:31:29 -03:00
keowu
0b5c9b3808 feat: Improve Ryujin MiniVM to support dual arguments for better compatibility and more
- Ryujin MiniVM now supports dynamic register values, allowing it to store immediate values and registers using dual arguments: the first as the register operand (argument one) and the VM bytecode as the second (argument two).
- Code improvements and bug fixes.
2025-06-17 21:12:15 -03:00
keowu
da1c91d07a feat: Functional MiniVM Entry and Stable VM Stub for Running Virtualized Bytecode (To Be Improved in Future Commits)
- Ryujin can now interpret MiniVM bytecode. It inserts the MiniVM entry routine's RVA to enable execution of the VM interpreter.
- This is just the initial implementation and will be significantly improved in future commits. We're pushing our first working solution for now.
2025-06-16 21:32:34 -03:00
keowu
3a3a92f7ca feat: Initial implementation of Ryujin MiniVM virtualization
- Ryujin can now locate candidate instructions, convert them into VM bytecode, and insert the MiniVM entry point to enable execution of these bytecodes.
- Minor bug fixes.
2025-06-15 18:23:55 -03:00
keowu
b1b309d32f feat: Base for Simple-Virtualization Feature
- Prepare the codebase for the upcoming simple-virtualization feature for Ryujin.
2025-06-10 20:59:53 -03:00
keowu
a3a4f9884a feat: Completed implementation of dynamic junk code obfuscation algorithm
- Ryujin can now generate dynamic junk code instructions that are truly random on every iteration.
- Fixed several constants used in junk code obfuscation.
2025-06-10 20:20:30 -03:00
keowu
c1d6e48682 feat: add base for dynamic junk code obfuscation algorithm
- Implemented the base for Junk Code dynamic generation.
- Implemented logic for ZydisRegister to GP register conversion.
- Fixed a heuristic analysis feature that stored unused stack registers.
- Ignored reserved stack registers.
- Increased the number of obfuscation passes.
2025-06-09 21:21:53 -03:00
keowu
a337df3096 feat: Junk Code Insertion Obfuscation feature, fixed typos, and more
- Completed the core Junk Code Insertion feature.
-Translated comments.
- Made minor code improvements.
- Planned future enhancements for the Junk Code Insertion feature.
2025-06-09 11:10:01 -03:00
keowu
2c1bcbe4fe feat: Code improvements, new obfuscation options, and initial junk code insertion logic
- Some parts of the code have been organized.
- A new obfuscation option to encrypt the obfuscated code is now available.
- The foundation for junk code insertion has been implemented.
2025-06-08 12:04:43 -03:00
keowu
21cd08a327 feat: Finalized IAT Obfuscation Feature Implementation
- Completed the implementation of the IAT obfuscation logic.
- Integrated AsmJit-based code emission for obfuscation.
- Obfuscated the PEB and its offset entries to evade automated scanning.
 - Added a randomized algorithm to generate a unique key for each iteration.
- Implemented runtime polymorphic IAT resolution to disrupt disassemblers and decompilers.
2025-06-08 11:45:59 -03:00
keowu
351756a1b4 feat: Initial implementation of IAT obfuscation feature
- Initial IAT obfuscation feature, Ryujin can now obfuscate the IAT for the configured procedures.
- New basic block context generation.
- Bug fixes.
 - Improved obfuscation logic for better organization.
2025-06-07 21:55:58 -03:00
keowu
5b004bff54 feat: Enable "Ignore Remove Original Code After Obfuscation"
Users can now enable an option in the obfuscation config to "ignore the removal of the original code" after obfuscation.
2025-06-04 20:55:23 -03:00
keowu
a02c72a5e5 feat: Handle multiple procedures at once, remove and redirect original code after obfuscation, and fix bugs
- Now Ryujin removes all the original procedure code after obfuscation.
- Now Ryujin redirects the original procedure to the correct obfuscated location for execution.
- Now Ryujin can handle multiple procedures at once and their relocation, organizing each obfuscated procedure sequentially in the new section.
- Fixed the bug in "RyujinObfuscationCore::fix_branch_near_far_short" that could break in some unexpected branching cases.
2025-06-03 20:58:00 -03:00
keowu
caf7a199db feat: Fixing full obfuscated opcode relocations, Obfuscated section improvements and much more
- Now after processing the obfuscated opcodes the ryujin can fix all the relocations for the obfuscated code turning this code valid again after obfuscating considering all possible relocation cases.
- The section generator was been improved as well
- The logic to handle obfuscated opcodes and function is also improved.
- Some unused field for our logic has been removed.
2025-06-01 12:58:04 -03:00
keowu
3f8bced350 feat: Begin working on Ryuujin core
- Working on obfuscated core
- Optimizing Ryuujin
2025-05-30 09:25:43 -03:00
keowu
dff74ed8b9 feat: Finished logic for add new section, Fixed variable bugs, New Utils functions and mroe
- Finished the logic for add new segments.
- Moved the segments code to a independent class for PESections.
- New method utils.
- Bug fixies.
- Code organization.
2025-05-25 11:22:15 -03:00
keowu
43b50dffe4 feat: IatObfuscation option, Section Name Randomizing, New Section Logic
- Adding a new option on obfuscator for IAT obfuscation support.
- Adding a new logic to randomize section names.
- Adding the initial logic to add a new section in the PE file. and writing some ideas and some things to be able to continue the logic in a correct way.
2025-05-24 22:03:30 -03:00
keowu
ee3025b942 feat: Ryujin Basic Blocks, Opcode extractor and disassembler.
- Working on Ryujin Basic Block parsing feature.
- Opcodes Extractor.
- Disassembler.
- Fixing some bugs when printing names.
2025-05-24 19:50:25 -03:00
keowu
8c10fd6088 del: Removed duplicated file
- Removing the duplicated file from the last organization commit.
2025-05-24 10:04:14 -03:00
keowu
61fe4c93ac feat: Organizing all Ryujin code
- Improving the code organization to make Ryujin more EASY to port, in the future.
2025-05-24 10:02:58 -03:00
keowu
2fa8db0f98 feat: Ryujin configuration, procedures choise, and more
- Now we can configure the obfuscator. identify the functions to work and what kind of action to do.
2025-05-24 09:52:40 -03:00
keowu
8d91117554 feat: Ryujin pdb parsing
Finishing the Ryujin PDB parsing feature implementation.
2025-05-24 09:19:01 -03:00
keowu
82a15d5358 feat: Ryujin Models, PDB, Utils
- Organizing Ryujin code models
- PDB Parsing
- Utils
- More
2025-05-23 22:04:08 -03:00
keowu
4aa9381177 feat: Ryujin Core Logic
- Ryujin core logic, class organization.
- Ryujin Utils.
2025-05-23 17:52:19 -03:00
keowu
0a15f20bc1 add: RyujinConsole
Added the first version of Ryujin Console.
2025-05-23 16:34:51 -03:00
keowu
e772c91676 Initial commit 2025-05-23 16:17:33 -03:00