逆向工程 (Reverse Engineering) 是從剖析成品的過程,從中得知材料的功能規格,及如何組合。在生活中,對逆向工程技術,我們並不陌生。
比方說,你在家裡嘗試沖出跟連鎖店相同風味的咖啡。或是,自己在外地去菜市場買菜,做出有媽媽味道的料理。
在駭客領域中,逆向工程技術扮演不可或缺的角色。尤其是惡意程式分析、漏洞挖掘與軟體破解領域。由於缺乏程式原始碼,逆向工程技術就變成理解惡意程式或軟體產品的唯一手段。
有些從事資安工作的朋友們,總說逆向很難,視逆向工程技術為畏途。但是,
就像陶淵明說的,一點一滴學習,努力堅持,總有一天會開花結果。
接下來,文章會跟大家分享學習逆向工程技術時,需要掌握的知識與工具。
文章目錄
組合語言
組合語言(簡稱組語) 是一種低階的程式語言。依不同 的電腦 CPU 架構,組語寫法亦不同。逆向工程第一步,常將編譯好的軟體程式進行反組譯。由於 Intel CPU 市佔率高,逆向工程最常遇到 Intel x86 組語。不過,近幾年大量 IOT 裝置聯網,往後接觸 ARM 組語的機會也會不少。
推薦新手從 Intel x86 組語入門,網路學習資源豐富,亦可選擇坊間中英文出版書籍,進行學習。
學習資源:
- NASM Assembly Language Tutorials – asmtutor.com (學習 Linux 作業系統組合語言)
- Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B, 2C & 2D): Instruction Set Reference, A-Z
- 書籍: Assembly Language Step-by-Step: Programming with Linux
- 書籍: Practical Malware Analysis
IDA Pro
Hex-Rays 公司開發的 IDA Pro 軟體,在逆向工程領域市佔率極高。類似工程製圖的 AutoCAD 或是美術設計的 PhotoShop。
IDA Pro 的功能可針對二進制執行檔,進行靜態與動態分析。支援市面上多種 CPU 與作業系統產生的執行檔,如 EXE、DLL、ELF 執行檔等。常用於分析惡意程式與弱點挖掘,但無法分析 Office 文件、PDF 文件。
而 IDA Pro 是付費軟體。目前 Hex-Rays 公司有 3 個版本的 IDA,IDA Free、IDA Home 與 IDA Pro。版本差異部分,可參閱 Hex-Rays 公司的說明網頁。
IDA Pro 最讓人津津樂道的是提供 Decompiler Plug-in,可將執行檔反編譯出的組合語言,再翻譯成類似 C 語言的程式語法。然而,這樣的翻譯結果雖無法 100 % 還原,但已能讓分析人員加速理解執行檔的功能。翻譯效果,可參閱 Hex-Ray 公司的說明網頁。
學習資源:
x64dbg
我認為 x64dbg 是 Windows 作業系統最好用的除錯器了。
優點如下:
- 操作介面簡單、易上手。
- 除錯功能豐富。
- 免費,且軟體原始碼公開,採用 GPL 授權。
- 開發團隊活躍,軟體更版頻繁。
- 同時支援 除錯 32 位元與 64 位元的 Windows EXE、DLL。
主功能的操作介面 (CPU) 由 5 個區域組成:反組譯區(Disassembly View)、暫存器區(Register View)、資料傾印區(Dump View)、監看區 (Watch View)與 記憶體堆疊 (Stack View)。
先前操作過除錯程式的人員,對這個介面應不陌生。
學習資源: