Radare2 可以支持面向字的架构吗?

逆向工程 拆卸 雷达2
2021-06-28 10:02:54

我想为传统的 48 位面向字的 CPU 编写一个 Radare2 插件,该 CPU 每个字有两个 24 位指令,并且自然地使用字寻址。我写了一个反汇编插件来打印指令,但很难遵循控制流程。最好在左侧打印字偏移而不是字节偏移,并且能够指定原始指令的打印方式。

在当前版本中可以吗?

代替

        0x00001800    002041       mode 101
        0x00001803    2a04b0       seti 2260(r2)
        0x00001806    aa0542       seti 2502(r12)
        0x00001809    6a7fd2       seti 77722(r6) ; 0x0000007f 
        0x0000180c    00855f       ld   2537
        0x0000180f    000585       st   2605
        0x00001812    01e041       shr  1
        0x00001815    6005b4       st   2664(r6)
        0x00001818    6f8403       loop 2003(r6)

理想情况下,我想得到类似的东西

           02000 00 002 0101    mode 101
                 02 24 02260    seti 2260(r2)
           02001 12 24 02502    seti 2502(r12)
                 06 24 77722    seti 77722(r6)
           02002 00 010 2537    ld   2537
                 00 000 2605    st   2605
           02003 00 036 0101    shr  1
                 06 000 2664    st   2664(r6)
           02004 06 37 02003    loop 2003(r6)
                 ...

(0x0000007f 注释可能是由于 x86 分析器默认启动,对吗?)

2个回答

我不知道什么是基于词的拱门。但是如果您参考固定大小的指令是的,在 r2 中您可以定义无效指令的对齐方式、最小和最大指令大小以及默认大小。所以是的,您可以使用radare 完成所有这些工作。

我将在github中填写一个问题,因为这是应该发布此类内容的地方。disasm 中的这种更改可以在 5-10 分钟内完成,但我想了解更多关于哪个拱门的详细信息,我在哪里可以找到这个插件等。

https://github.com/radare/radare2/issues/9813

谢谢