【逆向】IDA sig簽名文件制作


前言

使用IDA分析程序時,目標程序通常都沒有pdb符號文件,這時候如果IDA沒有對應的sig簽名文件,就會有很多庫函數和自定義函數無法識別。如果類似的函數有很多,就沒有辦法很好的分析。本文將介紹如何創建和使用IDA sig簽名文件。

步驟

1、獲取要創建簽名文件的靜態庫文件(.lib)
2、利用FLAIR解析器為該庫創建一個模式文件(.pat)
3、運行sigmake.exe處理創建的模式文件,生成一個簽名文件(.sig)
4、復制簽名文件到<IDA DIR>/sig目錄,Shift+F5應用新簽名文件

示例

使用vs2013編寫一個測試靜態庫

 1 //lib庫函數聲明
 2 int sum(int a, int b);    
 3 
 4 //lib庫函數實現
 5 #include "stdafx.h"
 6 #include "static.h"
 7 #include "stdio.h"
 8 #include <windows.h>
 9 
10 int sum(int x, int y)
11 {
12     int s;
13     s = (x + y)*1;
14 
15     CloseHandle(NULL);
16     return s;
17 }
18 
19 //lib庫函數調用
20 #include "stdafx.h"
21 #include "static.h"
22 
23 int _tmain(int argc, _TCHAR* argv[])
24 {
25     int num = 0;
26     num = sum(1,2);
27     printf("sum = %d\n", num);
28 
29     return 0;
30 }

注意:生成的時候不管是Debug模式還是Release模式,屬性設置里的“全程序優化”必須是“無全程序優化”,
默認的“使用鏈接時間代碼生成”選項生成的lib庫在生成sig文件時會報錯(不知道具體原因,先這么設置吧)

創建lib靜態庫后,使用IDA“flair68.zip”工具包中的“pcf.exe”創建模式文件(pat)
使用“sigmkae.exe”生成IDA可以識別的簽名文件(sig)

IDA分析加載簽名前的代碼

將sig簽名文件放入IDA/sig文件夾,Shift+F5加載簽名文件

IDA分析加載簽名后的代碼

總結

IDA sig文件的工作原理和PEID等工具其實是差不多的,都是通過硬編碼特征的方式來匹配和識別指定的函數或者程序入口,通過查看pat模式文件可以證明這一點。

參考

https://bbs.pediy.com/thread-75422.htm
https://www.cnblogs.com/17bdw/p/7286234.html
https://blog.csdn.net/Solena/article/details/79399019


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM