我希望IDA在图形和文本视图中自动为重要指令着色,例如,只要有call
或xor
指令将每个引用的背景颜色更改为a某种颜色。
以下是我要实现的目标:
图1图表视图
图2文字视图
我注意到您可以从主菜单转到Edit > Other > color instruction...
,这样您就可以更改所选指令的背景颜色,但这并不会改变所有指令,而且似乎只影响当前数据库。
我如何让IDA自动为某些说明添加颜色,例如call
和xor
,如示例图片所示?
我希望它能自动适用于我打开的任何数据库。
答案 0 :(得分:3)
您需要使用IDAPython
(python
IDA
)或IDC
(IDA
脚本语言编写IDA插件,该语言与{非常相似{1}}),以下代码位于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。