Unify setting segment base

This commit is contained in:
momo5502
2025-03-29 08:04:56 +01:00
parent dec66f051d
commit af6492be6d
7 changed files with 102 additions and 30 deletions

View File

@@ -13,6 +13,7 @@ extern "C"
int32_t icicle_write_memory(icicle_emulator*, uint64_t address, const void* data, size_t length);
size_t icicle_read_register(icicle_emulator*, int reg, void* data, size_t length);
size_t icicle_write_register(icicle_emulator*, int reg, const void* data, size_t length);
void icicle_start(icicle_emulator*);
void icicle_destroy_emulator(icicle_emulator*);
}
@@ -57,12 +58,31 @@ namespace icicle
{
timeout = {};
}
icicle_start(this->emu_);
}
void stop() override
{
}
void set_segment_base(const x64_register base, const pointer_type value) override
{
switch (base)
{
case x64_register::fs:
case x64_register::fs_base:
this->reg(x64_register::fs_base, value);
break;
case x64_register::gs:
case x64_register::gs_base:
this->reg(x64_register::gs_base, value);
break;
default:
break;
}
}
size_t write_raw_register(const int reg, const void* value, const size_t size) override
{
return icicle_write_register(this->emu_, reg, value, size);