日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三、IDA文件目录介绍及其扩展功能

發(fā)布時間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三、IDA文件目录介绍及其扩展功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、*IDA文件目錄簡介*

IDA的文件目錄一般如下圖所示,接下來介紹其幾個文件夾的作用

cfg:cfg目錄包含各種配置文件,包括基本的IDA配置文件ida.cfg,GUI配置文件idagui.cfg以及文本模式用戶界面配置文件idatui.cfg。

dbgsrv: 在linux動態(tài)調(diào)試 ELF 文件對應(yīng)的組件。

idc:idc目錄包含IDA的內(nèi)置腳本語言IDC所需的核心文件。

ids:ids目錄包含一些符號文件(IDA語法中的IDS文件),這些文件用于描述可被加載到IDA的二進制文件引用的共享庫的內(nèi)容。這些IDS文件包含摘要信息,其中列出了由某一個指定庫導(dǎo)出的所有項目。這些項目包含描述某個函數(shù)所需的參數(shù)類型和數(shù)量的信息,函數(shù)的放回類型以及與該函數(shù)的調(diào)用約定有關(guān)的信息。

Loaders:loaders目錄包含在文件加載過程中用于識別和解析PE或ELF等已知文件格式的IDA擴展。

platform:系統(tǒng)運行需要的庫文件

plugins:plugins目錄包含專門為IDA提供附加功能的IDA模塊。

procs:procs目錄包含已安裝的IDA版本所支持的處理器模塊。處理器模塊為IDA提供機器語言-匯編語言轉(zhuǎn)換功能,并負責生成在IDA用于界面中顯示的匯編語言。

Sig:sig目錄包含IDA在各種模式匹配操作中利用的現(xiàn)有代碼的簽名。通過模式匹配,IDA能夠?qū)⒋a序列確定為已知的庫代碼,從而節(jié)省大量的分析時間。這些簽名有IDA的“快速的庫識別和鑒定技術(shù)”(FLIRT)生成。

til:til目錄包含一些類型庫信息,IDA通過這些信息記錄特定與各種編譯器庫的數(shù)據(jù)結(jié)構(gòu)的布局

二、*IDA擴展功能*

IDA Pro作為功能強大的靜態(tài)反匯編器,具有良好的交互性、可編程性、可擴展性及對多處理器的支持。對于IDA Pro的可擴展性表現(xiàn)在兩個方面,一是采用內(nèi)置的腳本語言IDC寫腳本;二是采用Hex-rays提供的SDK寫插件Plug-in。簡單的任務(wù)交由腳本完成,復(fù)雜的任務(wù)則需要定制滿足需求的插件。

*2.1 IDC腳本*

IDA的功能雖然強大,但是顯然不能滿足每一位用戶的一切需求,于是IDA集成了一個腳本引擎,讓用戶從編程的角度對IDA的操作進行全面控制。IDA的腳本可以看作一個宏,又或者一種查詢語言,它能以編程的方式 訪問IDA的數(shù)據(jù)庫的內(nèi)容。IDA的腳本語言叫做IDC,之所以取這個名稱,可能是因為他的語法與C語言的語法非常相似。

常用IDC:https://www.cnblogs.com/LyShark/p/13100048.html

IDC腳本編寫語法:https://my.oschina.net/u/4261514/blog/4197562

接下來介紹IDC腳本的使用方法和常用的IDC腳本,使用IDC腳本主要有兩種方法:

\1. File->Script File 或使用熱鍵Alt+F7打開以“.IDC”為后綴名的IDC文件執(zhí)行。

\2. File->Script command… 或使用熱鍵Shfit+F2,打開“Execute script”窗口編寫并執(zhí)行IDC文件。

IDC示例1:關(guān)鍵字段定位腳本

該腳本實現(xiàn)查找范圍關(guān)鍵字段如“push ebp”和"mov ebp, esp",并返回其地位地址,腳本源碼:

#include <idc.idc>

static main() {

auto currAddr,startSeg,endSeg;

auto array_ptr = CreateArray(“array”);

auto ptr = GetArrayId(“array”);

SetArrayString(ptr,0,“push ebp”);

SetArrayString(ptr,1,“mov ebp, esp”);

Jump(0x0401000); // 光標跳轉(zhuǎn)到起始位置

currAddr = ScreenEA(); // 反回當前光標所在地址

startSeg = SegStart(currAddr);

endSeg = SegEnd(currAddr);

Message(“OEP = %x 起始地址: %x 結(jié)束地址: %x \n”,currAddr,startSeg,endSeg);

while(startSeg < endSeg)

{

auto x = 0;

auto count=0;

for(x=0;x<2;x++)

{

auto op = GetDisasm(startSeg);

auto st = GetArrayElement(AR_STR,ptr,x);

if(strstr(op,st) == 0) {

count = count +1;

if(count == 2)

{

msg(“匹配地址: %x \n”,startSeg–);

}

}

startSeg++;

}

}

DeleteArray(ptr);

}

Shift + F2調(diào)出IDC窗口,填寫源碼,點擊“Run”執(zhí)行

執(zhí)行結(jié)果

*2.2 IDA軟件開發(fā)工具包*

IDA Pro的功能由四大模塊(modules)支持,分別是(基于Windows/IA-32平臺):

Plug-in 插件:利用SDK提供的API,完善IDA Pro的功能,擴展名plw。

Loaders 加載器:將可執(zhí)行文件載入內(nèi)存,進行分段,擴展名ldw。

Processor 處理器:將可執(zhí)行程序的機器碼反匯編成匯編代碼,擴展名w32。

Debuggers 調(diào)試器:IDA Pro自帶的調(diào)試器。

上述四個模塊均能通過Hex-rays公司提供的SDK得到擴展,因為 SDK提供了大量的API,這些API可以涉及到IDA Pro軟件的系統(tǒng)層,用戶通過編寫調(diào)用這些API的C++程序達到擴展IDA Pro功能的目的。目前使用最為廣泛的就是利用SDK開發(fā)IDA Pro插件。

*2.3 IDA 插件的安裝和使用*

IDA的插件是IDA的可擴展性的重要體現(xiàn),其安裝目錄下的plugin文件夾就是專門位插件擴展服務(wù)的,而且隨著IDAPython的引入,IDA插件的擴展變得十分的便捷。接下來介紹幾個常見的IDA插件

Github上有人整理了IDA的插件匯: https://github.com/onethawt/idaplugins-list

1. *Hex-Ray*

Hex-Ray可能是所有IDA插件得“始祖”,他是一個反編譯插件,能夠為已編譯得32位X86二進制文件中得函數(shù)生成“類似C語言的偽代碼”。要安裝這個插件,只需將提供的插件文件復(fù)制到plugin目錄即可。

安裝完畢后,可以通過View->Open Subviews->Pseudocode(熱鍵F5)激活這個反編譯器,接著IDA會打開一個新的窗口,包含生成的偽代碼,如下圖:

2. *IDAPython*

IDA Pro內(nèi)置的腳本語言IDC太過簡陋,由Gergely Erdelyi完成的IDAPython插件將python語言集成到IDA Pro中,將python腳本語言的靈活性和IDA Pro反匯編器的強大功能完美結(jié)合起來。

對于DIA Pro 6.8之后的版本,IDAPython是自帶的插件,IDAPython的安裝非常簡單,

項目地址:https://github.com/idapython
IDA Python手冊:https://www.hex-rays.com/products/ida/support/idapython_docs/

1:將解壓后plugins目錄下文件拷貝到 IDA Pro安裝目錄下的plugins中。

2:將解壓后的python python64兩個目錄下的文件拷貝到 IDA Pro安裝目錄下。

重啟 IDA Pro,對某個文件分析時,發(fā)現(xiàn)FILE菜單里多出了python的相關(guān)條目,證明安裝成功。

3. ****IDA7.0安裝findcrypt插件****

參考鏈接:https://www.cnblogs.com/mke2fs/p/10938455.html

Findcrypt是IDA Pro一個插件,其功能是可查找加密常量

安裝成功的話,快捷鍵Ctrl+Alt+F可以調(diào)出上圖的窗口,識別一些常見的算法,插件鏈接放上:https://github.com/polymorf/findcrypt-yara

只裝插件是會報錯的,還需要一些必要的運行庫,需要安裝yara-python和Microsoft Visual C++ Compiler for Python 2.7

*首先********安裝********yara-python*

https://www.cnblogs.com/Fightingbirds/p/13840265.html

*安裝Microsoft Visual C++ Compiler for Python 2.7支持庫*

下載鏈接:https://www.microsoft.com/en-us/download/details.aspx?id=44266

點擊Download下載后安裝

安裝兩個支持庫都裝好后,把插件解壓后把下圖中的兩個文件添加到IDA7.0的plugins目錄

接著重啟IDA,使用快捷鍵Shift+Alt+F,打開Findcrypt result窗口。

總結(jié)

以上是生活随笔為你收集整理的三、IDA文件目录介绍及其扩展功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。