如何在 IDA 中自动为线条着色?
How to automatically color lines in IDA?
我希望 IDA 自动为重要指令的图形和文本视图中的线条着色,例如,只要有 call
或 xor
指令,就会更改每个引用的背景颜色到某种颜色。
这是我想要实现的目标:
图 1 图表视图
图2文字视图
我注意到您可以从主菜单转到 Edit > Other > color instruction...
,这将允许您更改所选指令的背景颜色,但这不会更改所有指令,似乎只影响当前数据库。
如何让 IDA 自动为某些指令着色,例如示例图像中显示的 call
和 xor
?
我希望它自动适用于我打开的任何数据库。
您需要使用 IDAPython
(python
for IDA
)或 IDC
(IDA
非常相似的脚本语言编写 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
。
我希望 IDA 自动为重要指令的图形和文本视图中的线条着色,例如,只要有 call
或 xor
指令,就会更改每个引用的背景颜色到某种颜色。
这是我想要实现的目标:
图 1 图表视图
图2文字视图
我注意到您可以从主菜单转到 Edit > Other > color instruction...
,这将允许您更改所选指令的背景颜色,但这不会更改所有指令,似乎只影响当前数据库。
如何让 IDA 自动为某些指令着色,例如示例图像中显示的 call
和 xor
?
我希望它自动适用于我打开的任何数据库。
您需要使用 IDAPython
(python
for IDA
)或 IDC
(IDA
非常相似的脚本语言编写 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
。