目前我正在研究 x86 指令集架构 (ISA) 的动态指令替换。到目前为止,我只为基于 RISC-V 的处理器架构这样做。由于没有可以合成到 FPGA 的公共领域 x86 实现,我现在必须坚持使用可视化。
我的实验设置如下:一个来宾应用程序(用 gcc 编译,没有外部库)在 qemu-user-mode 下运行。(我发现这篇文章确实很有帮助:QEMU - 代码流 [指令缓存和 TCG])整个系统运行在 Fedora 25 Linux 操作系统上,并从最新的 git-sources 构建。
一些指令(我自己的代码分析)在内部发送到
static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s, int modrm)
从那里,我无法判断这类指令发生了什么。
gen_nop_modrm(env, s, modrm); (translate.c:8108)
是调用方法。
我的主要目标是在识别指令后添加指令,以便再次延迟连续执行同一指令。
我读到了基于 KVM 的 QEMU 执行是如何工作的。显然,某种超监督是可能的(即使对于 USB 交易:https ://www.blackhat.com/docs/eu-14/materials/eu-14-Schumilo-Dont-Trust-Your-USB-How-To- Find-Bugs-In-USB-Device-Drivers-wp.pdf)架构(虽然非常复杂)到目前为止是直截了当的。
我对感兴趣:
- 这些 gen_lea_modrm 方法如何处理指令。
- 可以观察到通过 KVM 天真地传递的指令吗?
- 翻译缓冲区(tb)被分块(据我所知),我可以扩展缓冲区以注入指令吗?
- 是否有任何内置设施来进行指令分析
我用我拥有的搜索词彻底搜索了。任何类型的提示、提示或建议都会非常有帮助和赞赏。
此致。