uEmu 是一个基于 unicorn 引擎的 IDA 小可爱模拟器插件。
开箱支持以下架构:x86、x64、ARM、ARM64、MIPS、MIPS64

MSR S3_x, X0)idapyswitch 配置 IDAPythonbrew install unicorn 安装 Unicorn 二进制文件pip install unicorn 安装 Unicorn Python 绑定文件/脚本文件... 或 ALT+F7 加载 uEmu.py或者,uEmu 可以作为 IDA 插件自动加载。在这种情况下,将其放入 [IDA]/Plugins 文件夹,并在 uEmu.py 中将 USE_AS_SCRIPT 改为 False

ALT/OPTION 指定数量)从光标位置开始模拟。首先需要提供初始 CPU 上下文(参见 Update CPU Context) 之后,IDA 数据库中的所有段将被映射到模拟器(初始化数据也会被复制)
执行代码直到遇到代码或内存断点,或发生需要用户操作的事件。
执行单步执行。按住 ALT/OPTION 指定要执行的步数。

当模拟进行中时,此命令可用于中断执行。
重置模拟器实例并取消映射所有内存区域。
您可以使用 IDA 断点来指示模拟应中断的位置。 这包括代码断点和内存断点。 通常与 Run 命令一起使用。
当模拟器需要访问尚未映射的内存时,插件会显示以下对话框。


当模拟器遇到未知指令时,可以跳过它并手动恢复 CPU 上下文。

只是一个控制执行的面板。

当前 CPU 上下文。

每次模拟停止时,更改的寄存器将高亮显示。可以通过弹出菜单选择以 1、2 或 3 列显示寄存器。
可以通过弹出菜单更新 CPU 上下文(见下文)。
当前 CPU 扩展上下文。

每次模拟停止时,更改的寄存器将高亮显示。可以通过弹出菜单选择以 1、2 或 3 列显示寄存器。
可以通过弹出菜单更新 CPU 上下文(见下文)。
使用此视图查看指定地址和大小的内存区域。注释将显示在标题中以便参考。

每次模拟停止时,更改的内存块将高亮显示。

可以通过弹出菜单单独更改寄存器值,或通过 JSON 文件一次性更改。 当前上下文也可以保存为 JSON 文件供以后使用。



除了弹出菜单中列出的所有功能外,还有几个新命令。

显示所有已映射的区域。使用弹出菜单查看特定区域的内存或将其转储到文件。

此命令尝试通过创建新映射或与现有映射合并(如果可能)来同步 IDA 段与已映射内存。 这有助于在运行时将新的 IDA 段添加到模拟器,而无需重新启动模拟器。
从文件加载 uEmu 状态。
将 uEmu 状态保存到文件。 请注意,仅保存插件中定义的寄存器。

还可以使用扩展系统为 uEmu 添加新功能或在其基础上构建您的项目。 请在此处找到带有示例的描述 here