From b99cd39ee0a76dcedf8b1b030c5030cb82d81182 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sun, 10 Nov 2024 12:35:10 +0100 Subject: [PATCH] Add build instructions to readme --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8e53b44..f427072 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ A high-performance Windows process emulator that operates at the syscall level, Built in C++ and powered by the Unicorn Engine. +## +> [!NOTE] +> The project is still in a very early, prototypy state. The code still needs a lot of cleanup and many features and syscalls need to be implemented. However, constant progress is being made :) + ## Key Features * __Syscall-Level Emulation__: Instead of reimplementing Windows APIs, the emulator operates at the syscall level, allowing it to leverage existing system DLLs @@ -23,9 +27,56 @@ Built in C++ and powered by the Unicorn Engine. Perfect for security research, malware analysis, and DRM research where fine-grained control over process execution is required. -## -> [!NOTE] -> The project is still in a very early, prototypy state. The code still needs a lot of cleanup and many features and syscalls need to be implemented. However, constant progress is being made :) +## Building + +Make sure to clone the repo including all submodules. + +```bash +git clone https://github.com/momo5502/emulator.git +cd emulator +git submodule update --init --recursive +``` + +At the moment, the project is only compatible with 64 bit Windows, but that is being worked on: Issue 17 + +It requires CMake and uses CMake presets. Make sure to open an x64 Dev Cmd before running any of the commands. + +### Visual Studio 2022 + +To generate a Visual Studio solution, execute the following command: + +```bash +cmake --preset=vs2022 +``` + +The solution will be at `build/vs2022/emulator.sln`. + +### Ninja + +To build the debug version using Ninja run: + +```bash +cmake --workflow --preset=debug +``` + +You can also build the release variant: + +```bash +cmake --workflow --preset=release +``` + + +### Running Tests + +CTest is used for testing. + +In Visual Studio, build the `RUN_TESTS` target. + +With Ninja, execute the CTest command in the ninja build folder (e.g. `build/release/`): + +```bash +ctest +``` ## Preview