我是汇编代码、Keystone引擎和Unicorn引擎的新手,我在尝试解决逆向工程挑战时遇到了一个问题。
我得到了一些汇编代码,其中包括arm和thumb模式指令(CODE16和CODE32)。
但是,在初始化仿真器时,似乎只有两种选择。mu = Uc(UC_ARCH_ARM, UC_MODE_ARM) or mu = Uc(UC_ARCH_ARM, UC_MODE_THUMB)
当我选择其中一个时,只运行汇编代码的一部分。我使用的是python绑定。我是否正在尝试做一些不可能或不受支持的事情?
发布于 2021-03-11 20:16:29
只需在任何模式下初始化,就像在钩子中一样正常(在C中):
static void hook_code(uc_engine *uc, uint64_t address, uint32_t size, void *user_data)
{
uc_reg_read(uc, UC_ARM_REG_CPSR, &cpsr);
int thumb_state = cpsr & 0x20;
if (thumb_state){ // if thumb bit set...
// Do Thumb things (e.g capstone Thumb mode disassemble)
} else { // Arm mode set
// Do Arm things (e.g capstone Arm mode disassemble)
}
}https://stackoverflow.com/questions/66416246
复制相似问题