国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【軟件逆向-分析工具】反匯編和反編譯工具

這篇具有很好參考價值的文章主要介紹了【軟件逆向-分析工具】反匯編和反編譯工具。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、IDA

1.1、簡介:

1.2、使用方法:

(1)IDA打開文件

(2)IDA主窗口介紹

(3)IDA的基本使用

二、調(diào)試器

2.1、簡介:

2.2、Ollydbg

(1)主界面

(2)斷點操作

(3)代碼跟蹤操作

2.3、gdb

(1)簡介:

(2)安裝

(3)基本的調(diào)試操作

三、Trace類工具

3.1、簡介:

3.2、Qira


一、IDA

1.1、簡介:

反匯編工具有很多,但功能最強大、應(yīng)用最廣泛的當屬IDA Pro(簡稱IDA)。在反編譯方面,最好的反編譯工具為IDA自帶的Hex-Ray插件(快捷鍵為F5),所以這里主要介紹IDA。

IDA支持的文件類型非常豐富,除了包括PE格式、ELF格式之外,還包括DOS、Mach-O、.NET等文件格式。同時IDA還支持幾十種不同的處理器架構(gòu)。

1.2、使用方法:

(1)IDA打開文件

通過菜單欄中的File→Open,選擇要分析的目標程序,IDA自動識別出了程序為x86_64的ELF程
序,直接點擊OK即可。


(2)IDA主窗口介紹

(1)工具欄區(qū)域:常用工具

(2)導(dǎo)航帶:加載文件的地址空間的線性視圖,其會呈現(xiàn)二進制文件的整個地址范圍。不同的顏色表示不同類型的文件

(3)函數(shù)窗口:顯示了所有的函數(shù)

(4)數(shù)據(jù)顯示窗口:數(shù)據(jù)顯示窗口包括:反匯編窗口、反編譯窗口、導(dǎo)入表窗口、導(dǎo)出表窗口、結(jié)構(gòu)體窗口等。

(5)消息窗口:是IDA輸出的信息,等同于一個控制臺輸出設(shè)備。


(3)IDA的基本使用

(1)函數(shù)修正

以push ebp/rbp指令開頭的地址為一個函數(shù)的起始地址,但是有時候IDA并沒有將其正確地識別為函數(shù),此時就需要手動地將其創(chuàng)建為函數(shù),創(chuàng)建函數(shù)之后通常就能對該函數(shù)進行反編譯操作

創(chuàng)建函數(shù)的方式為:在函數(shù)的起始地址的匯編代碼處,點擊右鍵,選擇Create Function,對應(yīng)的快捷鍵為P

(2)指令修正

在IDA中,如果某些指令或者數(shù)據(jù)識別有誤,可以進行手動修正(如使用快捷鍵D可轉(zhuǎn)化為數(shù)據(jù),使用快捷鍵C可轉(zhuǎn)化為代碼)

(3)數(shù)據(jù)修正

在數(shù)據(jù)段中,一個數(shù)據(jù)的長度可能為1、2、4或8字節(jié),此時可以通過快捷鍵D來修改為對應(yīng)的類型。

如果數(shù)據(jù)段中的某個部分為一個字符串,但是IDA并沒有正確識別,那么可以使用快捷鍵A將其轉(zhuǎn)換為一個ASCII字符串。

(4)注釋信息與重命名

修改程序中的變量或者函數(shù)名等信息幫助讀者理解,點擊右鍵,選擇Rename即可進行重命名。

此外,還可以為代碼添加注釋,使用快捷鍵“;”可以在反匯編窗口中添加注釋,使用快捷鍵“/”可以在反編譯窗口添加注釋。

對于一些針對不常用處理器架構(gòu)編寫的程序,可以開啟匯編的自動注釋功能。開啟的方式為勾選界面中的Auto comments

(5)二進制程序的patch

將修正后的多余字節(jié)轉(zhuǎn)化為空指令(nop指令,對應(yīng)的字節(jié)碼為0x90),這樣函數(shù)就能夠正常地反編譯

選擇菜單欄中的Edit→Patch program→Change byte功能進行修改

(6)交叉引用

IDA中包含了兩類:代碼交叉引用和數(shù)據(jù)交叉引用。

代碼交叉引用:

用于表示一條指令將控制權(quán)轉(zhuǎn)交給另一條指令。通過代碼交叉引用,可以知道哪些指令調(diào)用了哪個函數(shù)或指令。

數(shù)據(jù)交叉引用:

可用于追蹤二進制文件訪問數(shù)據(jù)的方式。通過數(shù)據(jù)交叉引用,可以知道哪些指令訪問了哪些數(shù)據(jù)。



二、調(diào)試器

2.1、簡介:

在逆向分析領(lǐng)域,分析者也會利用相關(guān)的調(diào)試工具來分析軟件的行為并驗證結(jié)果

調(diào)試器的兩個最基本的特征是:斷點設(shè)置和代碼跟蹤。

斷點允許用戶選擇程序中任意位置的某行代碼,一旦程序運行到這一行,那么它將指示調(diào)試器暫停運行程序,并顯示程序的當前狀態(tài)。

代碼跟蹤允許用戶在程序運行時跟蹤它的執(zhí)行,跟蹤意味著程序每執(zhí)行一條匯編代碼然后暫停,并允許用戶觀察甚至改變程序的狀態(tài)。

常用的調(diào)試器包括:Ollydbg、x64dbg、Windbg和gdb等。其中,Ollydbg可以調(diào)試Windows下的32位用戶態(tài)程序;x64dbg可以調(diào)試Windows下的64位應(yīng)用程序;Windbg是微軟提供的調(diào)試器,可以對用戶程序和系統(tǒng)內(nèi)核進行調(diào)試,但是GUI界面相對來說沒有那么友好;gdb是Linux系統(tǒng)下所用的主要調(diào)試器。下面主要講解最常用到的Ollydbg和gdb。

2.2、Ollydbg

Ollydbg(簡稱OD)是Windows下的一款具有可視化界面的用戶態(tài)調(diào)試工具。OD具有GUI界面,非常容易上手。專用版Ollydbg,該版本具有強大的對抗反調(diào)試的功能。


(1)主界面

反匯編窗口:載入程序后,窗口內(nèi)顯示的是程序反匯編后的源代碼。

信息窗口:進行動態(tài)調(diào)試時,窗口內(nèi)會顯示出當前代碼行的各個寄存器的信息,或者API函數(shù)的調(diào)用、跳轉(zhuǎn)等信息,可以用來輔助了解當前代碼行的寄存器的運行情況。

數(shù)據(jù)窗口:默認以十六進制的方式顯示內(nèi)存中的數(shù)據(jù)。

寄存器窗口:動態(tài)顯示CPU各個寄存器的內(nèi)容,包括數(shù)據(jù)寄存器、指針及變址寄存器、段寄存器,以及控制寄存器中的程序狀態(tài)字寄存器。

堆棧窗口:顯示堆棧的內(nèi)容。調(diào)用API函數(shù)或子程序時,通過查看堆??梢灾纻鬟f的參數(shù)等信息。

命令行:在原本的OD中是沒有命令行的,這個是一個外置的插件,可以方便地在動態(tài)調(diào)試時輸入命令。一般來說,主要是輸入下斷點或者清除斷點的命令?!懊钚忻?txt”文件中有詳細的命令及
功能介紹,大家可以查看。


(2)斷點操作

動態(tài)調(diào)試時要使程序在關(guān)鍵代碼處中斷,然后根據(jù)顯示的動態(tài)信息進行動態(tài)分析,這就需要對程序下斷點。斷點有一般斷點、內(nèi)存斷點、硬件斷點等類型,一般斷點是最常使用的斷點方式。

1)一般斷點
一般斷點就是將輸入的斷點地址處的第一個字節(jié)用INT3指令來代替。當程序運行到斷點地址時,就會執(zhí)行INT3指令,Ollydbg就會捕捉到這個指令而中斷下來。

下斷點一般有如下兩種方式:

F2鍵:在反匯編窗口中的代碼行上面按F2鍵就可以下斷點。下
斷點后,虛擬地址處將呈紅色狀態(tài)。如果想取消斷點,再按一下F2鍵
即可。

命令行方式:可以在命令行中使用bp命令下斷點。如bp 4516B8
或者bp MessageBoxA。

2)內(nèi)存斷點

內(nèi)存斷點分為兩種:內(nèi)存訪問斷點和內(nèi)存寫入斷點。OD每一時刻只允許有一個內(nèi)存斷點。

內(nèi)存訪問斷點:在程序運行時調(diào)用被選擇的內(nèi)存數(shù)據(jù)就會被OD中斷。根據(jù)這個特點,在破解跟蹤時只要在關(guān)鍵數(shù)據(jù)內(nèi)存中下斷點,就可以知道程序在什么地方和什么時候用到了跟蹤的數(shù)據(jù)。該功能對于一些復(fù)雜算法的跟蹤有很大的幫助。從破解上講,一個注冊碼的生成一定是由一些關(guān)鍵數(shù)據(jù)或者原始數(shù)據(jù)計算而來的,所以在內(nèi)存中一定會用到這些關(guān)鍵數(shù)據(jù),那么內(nèi)存訪問斷點就是比較好的中斷方法。

內(nèi)存寫入斷點:在程序運行時向被選擇的內(nèi)存地址寫入數(shù)據(jù)就會被OD中斷。根據(jù)這個特點,在破解時可以跟蹤一個關(guān)鍵數(shù)據(jù)是什么時候生成的,生成的代碼段在什么地方。所以,如果不知道一個關(guān)鍵數(shù)據(jù)的由來,就可以用內(nèi)存寫入斷點的方式查看計算的核心。

如果想要設(shè)置內(nèi)存斷點,則可以在數(shù)據(jù)窗口中的十六進制欄內(nèi)選擇一部分內(nèi)存數(shù)據(jù),然后單擊鼠標右鍵出現(xiàn)功能菜單,選擇“斷點”,然后從中選擇內(nèi)存訪問斷點或者內(nèi)存寫入斷點。

3)硬件斷點

硬件斷點并不會將程序代碼改為INT3指令,如果有些程序有自校驗功能,就可以使用硬件斷點了。下中斷的方法和下內(nèi)存斷點的方法相同,共有三種方式:硬件訪問、硬件寫入、硬件執(zhí)行。最多一共可以設(shè)置4個硬件斷點。


(3)代碼跟蹤操作

代碼跟蹤操作主要包括一些常見的快捷鍵,用于對程序進行動態(tài)跟蹤。

F9鍵:載入程序后,按F9鍵就可以運行程序了。

F7鍵:單步跟蹤(步入),即一條代碼一條代碼地執(zhí)行,遇到Call語句時會跟入執(zhí)行該語句調(diào)用地址處的代碼或者調(diào)用的函數(shù)代碼。

F8鍵:單步跟蹤(步過),遇到Call語句時不會跟入。

F4鍵:執(zhí)行到所選代碼。

ALT+F9鍵:執(zhí)行到程序領(lǐng)空,如果進入到引用的DLL模塊領(lǐng)空,則可以用此快捷鍵快速回到程序領(lǐng)空。

2.3、gdb

(1)簡介:

gdb是一個由GNU開源組織發(fā)布的、UNIX/Linux操作系統(tǒng)下的、基于命令行的、功能強大的程序調(diào)試工具。


(2)安裝

在大多數(shù)Linux發(fā)行版中,gdb都是默認安裝的,如果沒有,那么在Ubuntu下可以通過apt-get進行安裝

安裝命令為:sudo apt-get install gdb

如果需要調(diào)試其他架構(gòu)的elf程序,則可以安裝gdb-multiarch

安裝命令為:sudo apt-get install gdb-multiarch

此外,gdb也有很多插件,如peda、gef、pwndbg等,這里的插件提供了一些額外的命令,便于對程序進行逆向分析。這些插件都可以在Github上找到,根據(jù)其安裝說明進行安裝即可。圖9-9為gdb安裝了peda插件之后運行的界面,可以通過peda help命令查看新增的命令。


(3)基本的調(diào)試操作

1)啟動和結(jié)束gdb

【軟件逆向-分析工具】反匯編和反編譯工具

2)通用命令

【軟件逆向-分析工具】反匯編和反編譯工具

3)斷點

【軟件逆向-分析工具】反匯編和反編譯工具

4)運行調(diào)試目標

【軟件逆向-分析工具】反匯編和反編譯工具

5)查看和修改程序狀態(tài)

【軟件逆向-分析工具】反匯編和反編譯工具

6)其他命令

【軟件逆向-分析工具】反匯編和反編譯工具



三、Trace類工具

3.1、簡介:

通過一定的方式監(jiān)控并記錄程序的運行,然后使分析者在記錄的信息中得到程序的一些動態(tài)信息

eg:strace工具是Linux下的一個用來跟蹤系統(tǒng)調(diào)用的工具。一個更為強大的Trace類工具:Qira。

3.2、Qira

官方主頁為http://qira.me/,由著名的黑客geohot開發(fā)。安裝完成之后,運行命令qira-s/bin/ls,這樣相當于在4000端口開啟服務(wù)/bin/ls,使用nc localhost 4000即可連接上去。同時,還會開啟3002的Web端口,如圖9-10所示。

瀏覽器Web界面主要包括:

1)最左邊兩列為fork,每次用nc連一次4000端口,就會多一個fork。圖9-10中的兩列表示鏈接過兩次4000端口。

2)右邊的最上面有4個框,分別對應(yīng)如下信息。

113表示程序運行的第113條指令。

0表示第0個fork。

0x80484c7表示指令的地址。

0xf6fff01c表示數(shù)據(jù)的地址。

3)右邊的下面是程序運行的指令、寄存器、內(nèi)存、調(diào)用的系統(tǒng)調(diào)
用等。文章來源地址http://www.zghlxwxcb.cn/news/detail-441005.html

到了這里,關(guān)于【軟件逆向-分析工具】反匯編和反編譯工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 京東數(shù)據(jù)分析軟件工具(京東618銷量查詢)

    京東數(shù)據(jù)分析軟件工具(京東618銷量查詢)

    這一期,我們主要分享今年618京東美妝的預(yù)售數(shù)據(jù),包括面部護膚、香水彩妝、男士面部護膚品類。 -面部護膚- 今年618,面部護膚品類在京東累計預(yù)售量達到130萬件,預(yù)售額達到13億元。預(yù)售期間,護膚品類均價在1010元左右。期間,約有381個熱銷品牌和500家熱銷店鋪,是今年

    2024年02月08日
    瀏覽(27)
  • 電商平臺數(shù)據(jù)查詢工具(京東數(shù)據(jù)分析軟件)

    電商平臺數(shù)據(jù)查詢工具(京東數(shù)據(jù)分析軟件)

    ?“京東爆款如何打造”是很多商家都頭疼的問題。 下面,6個步驟分享給大家。 首先是選品。對于處于不同階段的商家來說,選品方式不同。 針對正準備開店的商家,選品可通過以下方式: (1)市場分析和自身情況,確定主打品類。 (2)行業(yè)市場和京東平臺市場、品類

    2024年02月04日
    瀏覽(30)
  • Linux開發(fā)工具大全 - 軟件包管理器yum | vim編輯器 | gcc/g++編譯器 | 自動化構(gòu)建工具Make/Makefile | gdb調(diào)試工具

    Linux開發(fā)工具大全 - 軟件包管理器yum | vim編輯器 | gcc/g++編譯器 | 自動化構(gòu)建工具Make/Makefile | gdb調(diào)試工具

    目錄 Ⅰ.? Linux 軟件包管理器 yum 一、yum 背景知識 二、yum 的基本使用 1、查看軟件包 2、軟件包名稱構(gòu)成 3、安裝軟件 4、卸載軟件 Ⅱ.vim編輯器 ?一、認識vim 1、vim概念? 2、模式及其切換 ?二、vim使用 1、vim的指令(重要)? 命令模式 插入模式 底行模式 2、vim配置 Ⅲ.gcc/g++編

    2024年02月05日
    瀏覽(73)
  • BI數(shù)據(jù)分析軟件:選擇最適合企業(yè)發(fā)展的工具

    隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)分析在各個行業(yè)中扮演著越來越重要的角色。而BI數(shù)據(jù)分析軟件作為數(shù)據(jù)處理和可視化的核心工具,既能幫助企業(yè)更好地理解和利用數(shù)據(jù),又能提升決策的準確性和效率。在市面上,有許多優(yōu)秀的BI數(shù)據(jù)分析軟件可以供我們選擇,那么接下來,數(shù)聚

    2024年04月11日
    瀏覽(21)
  • C++常用軟件分析工具從入門到精通案例集錦匯總

    本文是 C++常用軟件分析工具從入門到精通案例集錦 專欄的導(dǎo)航貼( 點擊鏈接,跳轉(zhuǎn)到專欄主頁,歡迎訂閱,持續(xù)更新… )。 專欄介紹 :根據(jù)近幾年C++軟件異常排查的項目實踐,詳細地講述如何使用PE工具、Dependency Walker、GDIView、Process Explorer、Process Monitor、API Monitor、Clum

    2024年02月14日
    瀏覽(51)
  • C++(Qt)軟件調(diào)試---靜態(tài)分析工具clang-tidy(18)

    C++(Qt)軟件調(diào)試---靜態(tài)分析工具clang-tidy(18)

    更多精彩內(nèi)容 ??個人內(nèi)容分類匯總 ?? ??C++軟件調(diào)試、異常定位 ?? 現(xiàn)在很多人在開發(fā)中完全忽略了編譯器、IDE的警告提示,這怎么可能寫出穩(wěn)定的程序。 clang-tidy是一個由LLVM項目提供的開源工具,是一個靜態(tài)分析工具,用于進行靜態(tài)代碼分析和代碼質(zhì)量改進。 支持C++/C

    2024年01月23日
    瀏覽(18)
  • [系統(tǒng)安全] 四十五.惡意軟件分析 (1)靜態(tài)分析Capa經(jīng)典工具的基本用法萬字詳解

    [系統(tǒng)安全] 四十五.惡意軟件分析 (1)靜態(tài)分析Capa經(jīng)典工具的基本用法萬字詳解

    您可能之前看到過我寫的類似文章,為什么還要重復(fù)撰寫呢?只是想更好地幫助初學(xué)者了解病毒逆向分析和系統(tǒng)安全,更加成體系且不破壞之前的系列。因此,我重新開設(shè)了這個專欄,準備系統(tǒng)整理和深入學(xué)習系統(tǒng)安全、逆向分析和惡意代碼檢測,“系統(tǒng)安全”系列文章會更

    2023年04月16日
    瀏覽(83)
  • [系統(tǒng)安全] 四十六.惡意軟件分析 (2)靜態(tài)分析Capa經(jīng)典工具批量提取靜態(tài)特征和ATT&CK技戰(zhàn)術(shù)

    [系統(tǒng)安全] 四十六.惡意軟件分析 (2)靜態(tài)分析Capa經(jīng)典工具批量提取靜態(tài)特征和ATT&CK技戰(zhàn)術(shù)

    終于忙完初稿,開心地寫一篇博客。 您可能之前看到過我寫的類似文章,為什么還要重復(fù)撰寫呢?只是想更好地幫助初學(xué)者了解病毒逆向分析和系統(tǒng)安全,更加成體系且不破壞之前的系列。因此,我重新開設(shè)了這個專欄,準備系統(tǒng)整理和深入學(xué)習系統(tǒng)安全、逆向分析和惡意代

    2024年02月11日
    瀏覽(23)
  • 軟考高級系統(tǒng)架構(gòu)設(shè)計師系列論文八十九:論軟件需求分析方法和工具的選用

    軟考高級系統(tǒng)架構(gòu)設(shè)計師:論軟件需求管理

    2024年02月11日
    瀏覽(88)
  • 軟考140-上午題-【軟件工程】-軟件工具

    軟考140-上午題-【軟件工程】-軟件工具

    用來輔助軟件開發(fā)、運行、維護、管理和支持等過程中的活動的軟件稱為軟件工具。 對應(yīng)于軟件開發(fā)過程的各種活動,軟件開發(fā)工具通常有:需求分析工具、設(shè)計工具、編碼與 排錯工具、測試工具等。 輔助軟件維護過程中活動的軟件稱為軟件維護工具,它輔助維護人員對軟

    2024年04月24日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包