如何在 IDA 中自动为线条着色?

How to automatically color lines in IDA?

我希望 IDA 自动为重要指令的图形和文本视图中的线条着色,例如,只要有 callxor 指令,就会更改每个引用的背景颜色到某种颜色。

这是我想要实现的目标:

图 1 图表视图

图2文字视图

我注意到您可以从主菜单转到 Edit > Other > color instruction...,这将允许您更改所选指令的背景颜色,但这不会更改所有指令,似乎只影响当前数据库。

如何让 IDA 自动为某些指令着色,例如示例图像中显示的 callxor

我希望它自动适用于我打开的任何数据库。

您需要使用 IDAPythonpython for IDA)或 IDCIDA 非常相似的脚本语言编写 IDA 插件到C),下面的代码在IDC:

#include <idc.idc>
static main(void)
{
    auto currentEA;
    auto currentMnem;
    auto prevMnem;
    auto currentOp;
    prevMnem = "";
    currentOp;

    currentEA = FirstSeg();
    currentEA = NextHead(currentEA, 0xFFFFFFFF);
    while (currentEA != BADADDR)
    {
        currentMnem = GetMnem(currentEA);

       //Highlight call functions
       if (currentMnem == "call")
       {
           SetColor(currentEA, CIC_ITEM, 0xc7c7ff);
       }
    }
}

您还可以参考操作码的操作数:

//Non-zeroing XORs are often signs of data encoding
if (currentMnem == "xor")
{
    if (GetOpnd(currentEA, 0) != GetOpnd(currentEA, 1))
    {
        SetColor(currentEA, CIC_ITEM, 0xFFFF00);
    }
}

此处a guide from Hex Blog使用IDC插件

这里是 a sample for similar script in IDA Python 而不是 IDC