如何在IDA中自动着色线?

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

这是我想要实现的目标:

enter image description here

图1图表视图

enter image description here

图2文本视图

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

如何使IDA自动为某些指令着色,如 callxor ,如示例图像所示?

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

回答(1)

3 years ago

您需要使用 IDAPythonpython 代表 IDA )或 IDCIDA 脚本语言与 C 非常相似)编写IDA插件,以下代码位于 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 .