2012-01-14 98 views

回答

3

您可以編寫一個快速的IDC腳本來枚舉函數名並將其發送到文本文件。

檢查idc.idc是否使用適當的命令。

另一種方法是隻需打開功能窗口,按Ctrl + C,結果粘貼到文件

+3

我需要使用Ctrl + Ins將子視圖的內容複製到剪貼板。 – user1354557 2013-02-14 16:13:32

0

下面是我用傾倒我的函數名稱的代碼,你要到0x40000更改爲第一個功能EA值。你也可能想要改變輸出信息。我右鍵單擊輸出窗口,並清除它,然後運行該腳本,然後單擊鼠標右鍵另存爲:

#include <idc.idc> 

static FuncDump(start) 
{ 
    auto ea, str, count, ref; 
    auto end; 
    auto teststr; 

    ea = start; 

    while(ea != BADADDR) 
    { 
     str = GetFunctionName(ea); 
     if(str != 0) 
     { 
      end = FindFuncEnd(ea); 

      count = 0; 
      ref = RfirstB(ea); 
      while(ref != BADADDR) 
      { 
       count = count + 1; 
       ref = RnextB(ea, ref); 
      } 

      teststr = sprintf("sub_%X", ea); 
      if(teststr != str) 
      { 
       Message("-s 0x%X=%s\n", ea, str); 
      } 
      //Message("%s, 0x%d, 0x%x, 0x%x, 0x%x, %d\n", str, count, ea, end, end-ea, end-ea ); 
     } 

     ea = NextFunction(ea); 
    } 
} 

static main() 
{ 
    //Message("FuncDump: Start\n"); 

    FuncDump(0x40000); 

    //Message("FuncDump: Done\n"); 
} 
+0

如何從輸出窗口導出名稱?當我點擊右鍵我得到的是複製/清除。另外,爲了在IDA 5免費 – crush 2013-09-05 20:04:55

+0

@crush中使用'form()'替換'sprintf()',在付費版本中,在輸出窗口中有'save as'選項。 – 2014-06-28 04:05:30

+0

我突出顯示「功能」窗口中的所有子程序,然後單擊編輯菜單,然後單擊複製。 – 2015-04-02 00:05:46

0

對於Windows DLL,可以有兩個或多個功能關聯與不同的順序相同的地址數字。

爲每個地址編寫一個函數腳本是一個錯誤的假設。

的更簡單的方法我是通過 文件的程序不變出口 - >農產品文件 - >創建ASM文件

,並列出了字符串「導出入口」的所有出現類似的「grep」的工具。

即使免費使用IDA Pro 5,此功能也可以使用。

當然,分析完成前需要一段時間。

相關問題