2015-10-03 52 views
2

我希望IDA自動在圖形和文本視圖中對重要說明中的線條進行顏色設置,例如,任何有callxor指令的地方都可以將每個引用的背景顏色更改爲某種顏色。如何在IDA中自動對線條進行顏色修改?

下面是我所期待實現的:

enter image description here

圖1圖形視圖

enter image description here

圖2文本視圖

我注意到你可以去Edit > Other > color instruction...,這將允許您更改所選指令的背景顏色,但這並不會改變它們的全部,並且似乎隻影響當前數據庫。

如何讓IDA自動對特定指令進行上色,如callxor如示例圖片所示?

我希望它自動適用於我打開的任何數據庫。

回答

3

你需要編寫一個IDA插件使用IDAPythonpythonIDA)或IDCIDA腳本語言,它非常類似於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

+0

我從您發佈的某個鏈接中找到了此頁[http://practicalmalwareanalysis.com/2012/03/25/decorating-your-disassembly/](http://practicalmalwareanalysis.com/2012/03/25/decorating-your-disassembly /)並將ColorIDA.IDC腳本保存在我的idc文件夾中。如果我這樣做了,我就加載了IDA並進入了'File> Script file..',它很慢,但最終加載並着色了'Call'行。我無法弄清楚如何讓它自動運行,但我無法讓python也能運行。第一次使用腳本,我有點困惑該怎麼辦?謝謝 – Craig

+0

所以我試着按照這個指導讓它自動運行,沒有太多的運氣:[http://fuzzynop.blogspot.co.uk/2013/04/making-ida-pretty-pretty-quickly.html](http ://fuzzynop.blogspot.co.uk/2013/04/making-ida-pretty-pretty-quickly.html)不知道我到底需要做什麼? – Craig

+0

我無法知道如何讓它在打開IDA時自動運行,但無論如何我需要做的就是加載一次腳本,當我下次打開它時保存當前數據庫時,它會立即加載腳本所以這對我來說很好,謝謝。 – Craig