首页 文章

如何在IDA中自动着色线?

提问于
浏览 14
2

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

这是我想要实现的目标:

enter image description here

图1图表视图

enter image description here

图2文本视图

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

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

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

1 回答

  • 3

    您需要使用 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 .

相关问题