IDA输出器使用outctx_t类管理输出,它是outctx_base_t类的一个子类实现。使用该类时,无须像《IDA权威指南》那样手动申请、释放缓冲区,但仍然需要调用flush_outbuf刷新缓冲区。IDA为所有输出事件初始化了outctx_t对象,可以在事件处理中直接使用该对象进行输出。输出器常用的三个事件为ev_out_insn、ev_out_mnem、ev_out_operand,分别对应输出指令、输出助记符、输出操作数。你可以直接在ev_out_insn用类似gen_printf的函数把整条指令输出,但IDA不建议这样做,因为这样将让其他人难以编写插件。当你使用out_mnemonic()时会触发ev_out_mnem事件,这让插件有机会优先处理该事件,比如你可以修改输出的字体颜色和排布让反汇编清单看起来更加美观,或者输出一些额外的信息。IDA的多次更新后,《IDA权威指南》中IDA处理器一章部分代码已经过时。以下是基于SDK7.6汇总的一些在输出器中常用的函数和变量。
IDA中的颜色输出很受限,无法定制颜色,如有其他方法,敬请告知。
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界