我正在开发一个项目,我想在x86中添加一些自定义操作码并在QEMU中运行它们.我已经想出如何修改QEMU中的代码生成,以便使用'假'操作码进行汇编指令并在QEMU中对其执行某些操作.
但是,我遇到麻烦的部分是我如何实际创建一个带有伪指令的二进制文件.我想到的唯一方法是添加一些db语句,然后手动编写指令.例如:
xor EAX, EBX
db 0xf1,0x32,0x55,0x00
mov EBX, EAX
Run Code Online (Sandbox Code Playgroud)
(假设db有足够的字节作为实际指令).这实际上是否会编译一个二进制文件,其中我在第二行中定义的字节被视为指令?
有更优雅的方法吗?由于我将修改QEMU以支持这些更改,因此我并不受指令格式的限制 - 我只需要让QEMU的代码生成器识别OP代码,其余的我可以根据需要制定.
db当出现新的CPU模型时,使用的方法是标准程序,当前工具没有立即更新以支持附加的寻址模式和/或指令.
请注意,现在在x86指令集中找到用于定义新指令的漏洞是相当具有挑战性的.查看英特尔最新的CPU架构文档:附录中总有一组表格显示操作码映射.这将是找到未使用的指令操作码序列的最简单方法.
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |