Unicorn引擎同时模拟ARM和THUMB模式

2024-05-17 05:28:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我对汇编代码、Keystone引擎和Unicorn引擎相当陌生,我在尝试解决逆向工程挑战时遇到了一个问题

我得到了一些汇编代码,其中包括arm和thumb模式指令(代码16和代码32)

但是,在初始化仿真器时,似乎只有两种选择。 mu = Uc(UC_ARCH_ARM, UC_MODE_ARM) or mu = Uc(UC_ARCH_ARM, UC_MODE_THUMB)

当我选择一个时,只运行汇编代码的一部分。我正在使用python绑定。我是否在尝试做一些不可能或不受支持的事情


Tags: 代码引擎modekeystone工程arm逆向arch
1条回答
网友
1楼 · 发布于 2024-05-17 05:28:39

只需在正常模式下初始化,并在钩子内初始化即可(在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)
    }   
}

相关问题 更多 >