From 9e8f921be1cbbd4114f4adffaa5dc4333e1edcda Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 8 Apr 2025 20:21:41 +0200 Subject: [PATCH 1/3] Add emulator names --- src/emulator/emulator.hpp | 2 ++ src/icicle-emulator/icicle_x64_emulator.cpp | 5 +++++ src/unicorn-emulator/unicorn_x64_emulator.cpp | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/src/emulator/emulator.hpp b/src/emulator/emulator.hpp index 05ee17cf..cf5cad1b 100644 --- a/src/emulator/emulator.hpp +++ b/src/emulator/emulator.hpp @@ -18,6 +18,8 @@ class emulator : public cpu_interface, public memory_interface, public hook_inte emulator(emulator&&) = delete; emulator& operator=(emulator&&) = delete; + virtual std::string get_name() const = 0; + virtual void serialize_state(utils::buffer_serializer& buffer, bool is_snapshot) const = 0; virtual void deserialize_state(utils::buffer_deserializer& buffer, bool is_snapshot) = 0; }; diff --git a/src/icicle-emulator/icicle_x64_emulator.cpp b/src/icicle-emulator/icicle_x64_emulator.cpp index 8e6aa4b0..06622586 100644 --- a/src/icicle-emulator/icicle_x64_emulator.cpp +++ b/src/icicle-emulator/icicle_x64_emulator.cpp @@ -416,6 +416,11 @@ namespace icicle return false; } + std::string get_name() const override + { + return "icicle-emu"; + } + private: std::list> storage_{}; std::unordered_map> hooks_{}; diff --git a/src/unicorn-emulator/unicorn_x64_emulator.cpp b/src/unicorn-emulator/unicorn_x64_emulator.cpp index c4840092..cd8a94cb 100644 --- a/src/unicorn-emulator/unicorn_x64_emulator.cpp +++ b/src/unicorn-emulator/unicorn_x64_emulator.cpp @@ -678,6 +678,11 @@ namespace unicorn return this->has_violation_; } + std::string get_name() const override + { + return "Unicorn Engine"; + } + private: mutable bool has_snapshots_{false}; uc_engine* uc_{}; From b9c4cf98ad72155279dee8ca4241d6520074e56b Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 8 Apr 2025 20:21:48 +0200 Subject: [PATCH 2/3] Disable icicle jit --- src/icicle/src/icicle.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/icicle/src/icicle.rs b/src/icicle/src/icicle.rs index 5a25d445..77e6769c 100644 --- a/src/icicle/src/icicle.rs +++ b/src/icicle/src/icicle.rs @@ -6,7 +6,7 @@ use crate::registers; fn create_x64_vm() -> icicle_vm::Vm { let mut cpu_config = icicle_vm::cpu::Config::from_target_triple("x86_64-none"); - cpu_config.enable_jit = true; + cpu_config.enable_jit = false; cpu_config.enable_jit_mem = true; cpu_config.enable_shadow_stack = false; cpu_config.enable_recompilation = true; From 9e4e872b55a331ccbbbfd7017217c25ce852d562 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 8 Apr 2025 20:22:29 +0200 Subject: [PATCH 3/3] Run icicle debug tests --- .github/workflows/build.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4993b209..2afb2310 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,14 +20,6 @@ on: options: - "true" - "false" - icicle_debug: - description: "Run debug tests with icicle emulator" - type: choice - required: false - default: "false" - options: - - "true" - - "false" #concurrency: # group: ${{ github.ref }} @@ -344,7 +336,6 @@ jobs: run: cp build/${{matrix.preset}}/artifacts/test-sample.exe build/${{matrix.preset}}/artifacts/root/filesys/c/ - name: CMake Test - if: "${{ matrix.emulator != 'Icicle' || matrix.configuration != 'Debug' || github.event.inputs.icicle_debug == 'true' || github.event.inputs.icicle_debug == 'true' || github.event_name == 'schedule' }}" run: cd build/${{matrix.preset}} && ctest --verbose -j env: EMULATOR_ROOT: ${{github.workspace}}/build/${{matrix.preset}}/artifacts/root @@ -410,7 +401,6 @@ jobs: run: cp build/${{matrix.preset}}/artifacts/test-sample.exe build/${{matrix.preset}}/artifacts/root/filesys/c/ - name: Run Test - if: "${{ matrix.emulator != 'Icicle' || matrix.configuration != 'Debug' || github.event.inputs.icicle_debug == 'true' || github.event.inputs.icicle_debug == 'true' || github.event_name == 'schedule' }}" uses: reactivecircus/android-emulator-runner@v2.34.0 with: api-level: 29