From 81ef6ed71a67c4ba6817c6eb20dcd39c871f9c27 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Mon, 18 Aug 2025 18:56:58 +0200 Subject: [PATCH] Fix gdtr loading for unicorn --- src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp b/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp index 87db9a92..d8a4185c 100644 --- a/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp +++ b/src/backends/unicorn-emulator/unicorn_x86_64_emulator.cpp @@ -244,8 +244,11 @@ namespace unicorn void load_gdt(const pointer_type address, const uint32_t limit) override { - const std::array gdtr = {0, address, limit, 0}; - this->write_register(x86_register::gdtr, gdtr.data(), gdtr.size() * sizeof(uint64_t)); + uc_x86_mmr gdt{}; + gdt.base = address; + gdt.limit = limit; + + this->write_register(x86_register::gdtr, &gdt, sizeof(gdt)); } void set_segment_base(const x86_register base, const pointer_type value) override