A visual, interactive Educational Tool designed to demonstrate the lifecycle of C and Java code (from source to execution) and explore the basics of Reverse Engineering. Built for students, educators, and curious developers.
- Multi-Language Lanes:
- C Lane: Source ➔ Preprocessing (
.i) ➔ Compilation (.s) ➔ Assembly (.o) ➔ Linking (.exe). - Java Lane: Source ➔ Bytecode (
.class) ➔ JVM Execution.
- C Lane: Source ➔ Preprocessing (
- Reverse Engineering Suite:
- Recon: Extract ASCII strings from compiled binaries.
- Disassembly: View raw CPU opcodes and mnemonics.
- Patching: Hex-edit binaries to alter behavior without recompiling.
- 🛡️ Strict Mode:
- Enforces the presence of Real Tools (
GCC,JDK). - No "mocking" allowed (what you see is actual tool output).
- Teaches proper environment setup (PATH variables).
- Enforces the presence of Real Tools (
- 🚀 Interactive details:
- Edit code in real-time.
- Break code to see compiler errors.
- Step-by-step visualization of artifacts.
- Core: Python 3.10+
- GUI Framework: CustomTkinter
- Syntax Highlighting: Pygments
- Backend:
subprocess(interacting with GCC/Java) - Build System: Python Source Distribution
- Python 3.10+
- GCC Compiler (MinGW-w64 recommended for Windows)
- Java JDK 17+
-
Clone the repository
git clone https://github.com/zis3c/Compilation-and-RE-Process.git cd Compilation-and-RE-Process/simulator -
Install Dependencies
pip install -r requirements.txt
-
Setup Environment
- Ensure
gccandjavacare accessible in your Command Prompt. - The app runs in Strict Mode and will alert you if they are missing.
- Ensure
python main.py- "GCC/Java not found" error?
- Add your
binfolders to the Windows System PATH. - Restart your terminal after installing compilers.
- Add your
- Window not showing?
- Ensure you have installed
customtkinter.
- Ensure you have installed
- Subprocess errors?
- The app suppresses console windows automatically. If you see crashes, check your environment.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by @zis3c
