冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 2619|回覆: 0
打印 上一主題 下一主題

[其它程式] 使用 Ghidra 進行逆向工程- Part 0

[複製鏈接]

366

主題

35

好友

1984

積分

金牌會員

飛翔至夢想的彼端~

Rank: 6Rank: 6

UID
86990
帖子
7161
主題
366
精華
0
積分
1984
楓幣
2440
威望
1881
存款
0
贊助金額
150
推廣
0
GP
70
閱讀權限
70
性別
保密
在線時間
1310 小時
註冊時間
2014-12-27
最後登入
2023-2-14

積分勳章 解說達人 在線終極王 論壇支持王 論壇粉絲 發帖達人 懶人勳章 太陽勳章 長老勳章 神手勳章 2016年紀念勳章 私服達人 音樂勳章 2017年紀念勳章 2017端午節紀念勳章 Android勳章 2018年紀念勳章 VIP會員 熱心助人 2018萬聖節紀念勳章 聖誕節紀念勳章 聖誕節紀念勳章2 2020年紀念勳章

跳轉到指定樓層
1
發表於 2020-2-3 21:55:28 |只看該作者 |倒序瀏覽

翻譯:看雪翻譯小組-玉林小學生

校對:看雪翻譯小組-Nxe
2O7pzf8
譯自英文-Ghidra是由國家安全局開發的免費開源逆向工程工具。這些二進製文件是在2019年3月的RSA大會上發布;這些資源在一個月後發佈在GitHub上。許多安全研究人員將Ghidra視為IDA Pro和JEB Decompiler的競爭對手。該軟件是使用用於GUI的Swing框架用Java編寫。

歡迎來到Ghidra逆向工程系列教程第一部分!本系列教程關注於如何使用NSA發布的新逆向工具來逆向windows可執行程序。目的是引導新手進入逆向工程領域,並為逆向高手重點介紹Ghidra的獨特功能。

本文將向你介紹Ghidra中的許多主窗口,後面是一個使用它逆向簡單CreakMe二進製文件的教程。本系列教程中,我們的所有樣例都運行在Windows主機上。你可以在這裡找到一個使用免費版Windows 64位系統的虛擬機。或者,你更喜歡在你的本地機器上直接運行,也沒問題!在介紹開始前,我們先獲取最新版本的Ghidra並運行。
安裝Ghidra
首先,Ghidra需要預先安裝好一些依賴軟件。Ghidra需要JDK 11,從這裡下載、安裝並運行它。安裝完JDK成後,從官方頁面獲到Ghidra最新版本。下載完成後,解壓文件並雙擊“runGhidra.bat”來啟動Ghidra。首次運行應該會看到用戶協議,在一些加載過程後,你會看到彈出項目窗口。如果對安裝或其它上面的操作有問題,在這裡查看說明文檔。
你的第一個項目,IOLI CreakMe
在項目窗口中可以加載二進製文件並組織項目內的文件。文中涉及的Windows二進製文件可以在這裡的“IOLI-crackme/bin-win32”目錄下找到。創建一個新項目並在下一步中使用Ghidra的batch import功能一次性導入所有文件。在project窗口,選擇“File > Batch import…”,瀏覽“bin-win32”目錄並選擇要導入的所有文件。等待操作完成,可以看到CreakMe文件被加載了。
cMOpsaJ
z3tGhW4
第一次,我們從“crackme0x00.exe”開始,雙擊它將打開code browser。會彈出一個消息框詢問你是否分析二進製文件,選擇“Yes”後你會看到可以執行的不同類型分析。對於本項目選擇默認的即可,選擇“Analyze”並等Ghidra完成。當全部完成後,可以在code browser中看到加載的二進制彙編代碼及主窗口。
52C8YGR

xuxMLDF
主窗口:Program Trees、Symbol Trees和Data Type Manager
讓我們來看看Ghidra在代碼瀏覽器中提供的主要窗口。Ghidra的一個有趣地方是上下文幫助菜單。對於大多數界面元素,你可以在懸停於上面時按F1來調出一個幫助嚮導,裡面可能有你想知道的東西。下圖嘗試使用上下文幫助來學習關於“Program Trees”窗口的更多知識。
LYPQEXO
在“Program Trees”窗口中,可以通過右鍵點擊“crackme0x00”目錄來以不同方式組織反彙編代碼的各個sections。可以點擊“Modularize By”並選擇“Subroutine”、“Complexity Depth”或“Dominance”。你也可以創建新目錄並根據自己的組織愛好拖拽各個sections。
LeR6ho4
uTYhxWr
“Program Trees”窗口下面的窗口是“Symbol Tree”窗口,從裡面可以看到二進製文件的導入、導出、函數、標籤、類和命名空間信息。擴展“Imports”節來查看目標程序使用的各種DLL和函數。如果你想看某個導入的函數在哪裡被調用,可以右鍵該函數並點擊“Show references to”,然後雙擊列出的條目以查看完整內容。
Gjl4mXl
hYbMcuI
從“Data Type Manager”中可以查看所有定義的類型,包括內建類型,二進製文件特有類型和其它人工包含進Ghidra的類型(如在這裡看到的Windows下叫做“windows_vs12_32”的類型)。擴展書本樣式按鈕並右鍵一個數據類型,點擊“Find uses of”可以查看該數據類型在二進製文件的哪裡被使用。
uj895JV
USuNZXY
主窗口:反彙編列表和函數圖

現在,我們看看最吸引人的地方,“Listing”窗口。在這裡,你可以看到反彙編代碼然後慢慢理解二進制代碼的每一部分功能。Ghidra向你提供了許多自定義listing窗口的方法,可以點擊右上方的“Edit the listing fields”圖標並點擊“Instruction/Data”標籤頁。Listing界面上的每個元素都可以修改大小、移動、禁用或刪除。也可以通過右鍵菜單來增加新元素。可以嘗試下修改“Address”域的大小使其更小,並刪除“Bytes”域。
I8xtV6B 可以通過在彙編代碼的任一位置右鍵看到listing窗口的上下文菜單。可以執行修改指令、設置書籤、註釋和編輯標籤功能。嘗試在listing窗口右鍵一個彙編指令並增加一個註釋。你可以通過雙擊CALL指令引用的函數來到達函數代碼以了解函數的功能。通過點擊左上方保存圖標旁邊的箭頭按鈕來實現向前、向後跳轉,或者使用快捷鍵“Alt-左箭頭按鍵”和“Alt-右箭頭按鍵”進行。試試看你能不能知道每個CALL .text指令調用的是哪個函數並通過編輯標籤來設置合適的函數名稱。嘗試增加一兩個註釋來描述不同代碼片段的功能。
InfF8yc
qS3i7Mj

熟悉IDA Pro的人喜歡首先查看圖形模式。Ghidra中對應的窗口是“Function Graph”窗口,該窗口可以通過點擊“Window”和“Function Graph”打開。函數圖可以使用“Edit the listing fields”來進行類似地自定義。Ghidra中的圖形默認不顯示註釋,可以使用域編輯器加入。你可能會注意到它的行為與IDA Pro的圖形模式有些不同,並且開始時不是全放大狀態。要配置函數圖,在圖形上點擊右鍵,選擇“Properties”然後在“View Settings”下拉列表中選擇“Start Fully Zoomed In”。
hbIVcTI

vvtPzDB
主窗口:反編譯
最後,我們在右邊看到反編譯窗口,其中是Ghidra估計的listing或unction graph窗口中的彙編代碼對應的高層代碼。嘗試在反編譯窗口高亮一個“if”表達式,你可以看到相應的彙編指令被高亮了。這是我最喜愛的Ghidra特徵之一,這在高級語言表達式和一組彙編指令之間建立了映射。
AOOVPvq


可以右鍵變量並重命名它們或者在反編譯中給變量增加註釋,這些操作也會在disassembly listing或function graph窗口中反應出來。Ghidra自動在這些窗口中進行同步。如果你想修改任一反編譯顯示選項,可以在窗口中點擊右鍵並選擇“Properties”。以更易理解的方式重命名本地變量,並查看進行的修改是否也在listing窗口顯示。

jFK9P4d
解決CreakMe
如果你到了這裡,你已經了解了Ghidra的主要界面並準備好了解決CreakMe(如果你還沒有)。運行crackme0x0.exe文件看看程序運行的結果。你被要求輸入一個密碼,根據輸入進行判斷,如果輸入不正確,返回“Invalid Password!”消息。
eHHNIWu

我們先通過在“Window > Defined Strings”窗口查看程序的字符串。可以看到在命令行中顯示的字符串。我們查看引用“Password”字符串的彙編代碼。在“Defined Strings”窗口右鍵“Password”項,會跳轉到程序中代碼段所在的節。
fmVMoMS

左鍵地址並選擇“References > Show References to Address”,你可以點擊列出的引用“Password”的代碼段中的項。找到比較用戶輸入和正確密碼的代碼段。重命名變量和函數為更有意義的名字並增加註釋來幫助分析。
mDdaiKE

85aFlz2
在引用“Password”的地方後面,有一個scanf調用來獲得用戶輸入,之後還有一個strcmp。可以看到用戶輸入保存在EAX中並保存在本地變量local_40中。字符串“250382”存儲在本地變量local_3c中,這兩個變量都被傳輸給strcmp。如果比較函數返回的結果是0,打印“Password OK ”。否則,執行jmp指令並打印“Invalid Password!”。再次運行“crackme0x00.exe”,輸入“250382”,成功。


m4pPci2
0GzP7GX
0SAV2D9
t0AiyFp



課程總結&回顧
我們使用Ghidra解決了第一個CrackMe!祝賀你和我們一起走到這裡。用於逆向工程這個程序的通用方法如下:

  • 嘗試運行,分析在目標中可以發現哪些數據、字符串。
  • 根據感興趣的數據、字符串的引用到達相關彙編代碼。
  • 推測彙編代碼中的函數和變量表示什麼。
  • 通過註釋和重命名函數、變量給代碼增加說明,隨著對程序理解的提高,對其進行回顧和修改。
  • 使用逆向過程獲得的理解來回答已定義的問題(正確的密碼是什麼?)
我們還學習了Ghidra的主窗口和部分功能,如:
  • 如何創建項目和導入文件
  • Program Trees,Symbol Trees,Data Type Manager窗口和接口
  • 自定義assembly listing窗口並增加註釋
  • 自定義function graph窗口並修改首選項
  • 反編譯窗口及它如何與listing窗口、function graph窗口同步
結論&延伸閱讀

如果你是逆向新手,這第一篇文章能夠讓你輕鬆進入該領域,並且第一次嘗試到CreakMe的勝利。如果你是一個逆向老手,期望你能獲得如何在每日的逆向任務中使用Ghidra的思路,並且熟悉其主要的UI元素。感謝閱讀本教程。
閱讀下一部分,點擊這裡看雪翻譯版),我們將討論轉換、應用數據類型,函數調用樹、圖和腳本管理器有關內容。

[發帖際遇]: xxx9638527410 與馬英九握手,為了復活花了 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
https://www.youtube.com/watch?v=vajUsmisNFQ  運命の人
https://www.youtube.com/watch?v=W1N1DYewwsk -螢
https://www.youtube.com/watch?v=abIRuMGldi8 一番の宝物
https://www.youtube.com/watch?v=HyyXq3GDJq0 Your Beats
https://www.youtube.com/watch?v=Turf7WDB3iY Angel Beats
https://www.youtube.com/watch?v=iyCFdilBCPw   -花篝
https://www.youtube.com/watch?v=Qae1QVgXrP8  -崩壞小丑
https://www.youtube.com/watch?v=mAEPs2PvyrQ  -Doll
https://www.youtube.com/watch?v=zyJJlPSeEpo  -世界的盡頭
https://www.youtube.com/watch?v=qhDMohNzxvo  -After Dark
https://www.youtube.com/watch?v=VpdLEk4MwmU  -雪の華
https://www.youtube.com/watch?v=q30xr2IH4pw  -Even Heaven
https://www.youtube.com/watch?v=mw9abYUxEwg  -夜行列車
https://www.youtube.com/watch?v=t6wBKcYIFGE  -緣結空蟬
https://www.youtube.com/watch?v=dfbBh-0LTHo   - April Showers
https://www.youtube.com/watch?v=ojG9C6L61oA  -君に最後の口づけを
https://www.youtube.com/watch?v=0Y4KXMjDJjU  -君がくれたもの
https://www.youtube.com/watch?v=Re6JJ_njYR4  -歌に形はないけれど
https://www.youtube.com/watch?v=TLWkm-SNDS8  -太陽と向日葵
https://www.youtube.com/watch?v=xV5B4fzBy9c  -他の誰かより悲しい恋をしただけ
https://www.youtube.com/watch?v=2k9Rk0-O2xE  -煙
https://www.youtube.com/watch?v=e4oVMSEPpww  -Letter Song
https://www.youtube.com/watch?v=em7yXGreZ_M  -最初の淚
https://www.youtube.com/watch?v=zW8_NGpjcnw  -温馨的家
https://www.youtube.com/watch?v=csGCZvNEOKc  -モトカレ
https://www.youtube.com/watch?v=XxTIrpWEh1o  -ねぇ/吶
https://www.youtube.com/watch?v=Ua9Ek1kE8dA -ゴシック
https://www.youtube.com/watch?v=HWgxbptCcuA  Violet Cry
https://www.youtube.com/watch?v=qIoDWTF0qSo 深い森
https://www.youtube.com/watch?v=JwCF0ueGmVM 緋弾のアリア「Scarlet Ballest」
https://www.youtube.com/watch?v=vYV-XJdzupY Hitohira No Hanabira
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-14 15:02

回頂部