A framework for interacting with external Win32 processes.
- /src - Source code of the framework
- /test - Resources for writing and running tests
- /examples - Examples of using the framework
- Read and write to an external process memory
- Allocate and deallocate external process memory
- Call function of an external process (currently supports cdecl, stdcall, and MSVC thiscall calling conventions)
- Code injection using various methods
- Search for byte sequences in external process memory using signatures
Add /src/external_process.hpp, /src/external_process.cpp to your project. Inherit from the 'ExternalProcess' class and implement the functionality you need. You can find examples of how to use the framework in the /examples directory.
The /test directory contains everything you need to write and run tests. As the primary functionality of the framework is based on the interaction between two Win32 processes, most tests require a "victim" application with which the framework will interact. For this purpose, the /test/external_process_simulator simulator is provided, which compiles into a 32-bit PE file. The test engine, tests, and auxiliary functionality are located in the /test/unit_tests directory. Tests are also compiled into a 32-bit PE file. Running this file will launch the simulator and start executing tests through interaction with it.
To run the tests, execute the make run_tests
command. This will build the external process simulator (output as external_process_simulator.exe in test/external_process_simulator/bin). Next, a link to external_process_simulator.exe will be moved to test/unit_tests/bin. Afterward, test.exe will start and the tests will run. The entire process is implemented in the (Makefile)[/Makefile] located in the repository root.
Test results, including test names and passed/failed test statistics, will be displayed in the console. Additionally, upon completion, test.exe will return a value equal to the number of failed tests.
You can also run tests manually without using the Makefile. To do this, place external_process_simulator.exe and test.exe in the same directory and execute test.exe