From eb87cb053ea09bb5a9e919dd53272127558c2d63 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Sun, 14 Jun 2026 20:20:52 -0700 Subject: [PATCH] fix bad sub register block address calculation!!! --- src/pe/x64/unwind/pe_x64_unwind.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pe/x64/unwind/pe_x64_unwind.c b/src/pe/x64/unwind/pe_x64_unwind.c index 88817527..5cb00655 100644 --- a/src/pe/x64/unwind/pe_x64_unwind.c +++ b/src/pe/x64/unwind/pe_x64_unwind.c @@ -359,7 +359,7 @@ pe_x64_uwnd_step(Arch arch, MemoryMap *memory_map, UWND_ModuleInfo *module_info, PE_UnwindGprRegX64 gpr_reg = (inst_byte - 0x58) + (rex & 1)*8; X64_RegCode reg_code = pe_x64_uwnd_reg_code_from_pe_gpr_reg(gpr_reg); Rng1U16 reg_rng = x64_reg_code_rng_table[reg_code]; - U64 *reg_ptr = (U64 *)((U8 *)®s + reg_rng.min); + U64 *reg_ptr = (U64 *)((U8 *)regs + reg_rng.min); reg_ptr[0] = value; regs->rsp = sp + 8; } @@ -428,7 +428,7 @@ pe_x64_uwnd_step(Arch arch, MemoryMap *memory_map, UWND_ModuleInfo *module_info, PE_UnwindGprRegX64 gpr_reg = (modrm & 7) + (rex & 1)*8; X64_RegCode reg_code = pe_x64_uwnd_reg_code_from_pe_gpr_reg(gpr_reg); Rng1U16 reg_rng = x64_reg_code_rng_table[reg_code]; - U64 *reg_ptr = (U64 *)((U8 *)®s + reg_rng.min); + U64 *reg_ptr = (U64 *)((U8 *)regs + reg_rng.min); U64 reg_value = reg_ptr[0]; // rjf: read immediate