實用逆向工程:初學者實作指南
指南 發布於 2026年7月6日

實用逆向工程:初學者實作指南

學習逆向工程二進制檔案的核心工作流程,從靜態分析到動態除錯,並掌握實用工具技巧。

逆向工程是對編譯軟體進行剖析,以理解其邏輯、行為和意圖的過程,而無需存取原始碼。無論您是在分析惡意軟體、審核閉源二進制檔案,或研究 CTF 挑戰,相同的核心工作流程都適用:先靜態蒐集資訊,再動態驗證假設。本指南將透過實用、工具無關的步驟引導您完成該工作流程,您可以立即應用。

設置安全的分析環境

在觸及任何陌生二進制檔案之前,請隔離您的工作區。使用專用虛擬機器且無法連線至您的主機,在分析前拍攝快照,並停用共享資料夾和剪貼簿同步。使用 Linux VM 搭配 radare2Ghidragdbobjdump 等工具可涵蓋大多數靜態和動態需求,而配備 x64dbgProcess Monitor 的 Windows VM 對於 PE 檔案至關重要。永遠不要在您的主要機器上分析可疑樣本,並始終在工作階段之間還原快照以避免交叉汙染。

靜態分析:閱讀而不執行

首先使用 filereadelf -h(Linux)或 PE 標頭檢查器(Windows)識別檔案類型和架構。使用熵分析檢查封裝或難懂化 — 類似 Detect It Easy 的工具會標示出疑似高熵區段,這暗示壓縮或加密。

接下來,將二進制檔案載入反組譯器如 Ghidra 或 IDA Free。重點關注:

  • 匯入和匯出 — API 呼叫如 CreateRemoteThreadVirtualAllocEx 暗示程式注入;WSAStartup 暗示網路功能。
  • 字串 — 執行 strings -n 8 binary 來找出硬編碼的 URL、檔案路徑或除錯訊息,這些揭示功能性。
  • 控制流圖 — Ghidra 的反編譯器檢視將原始組合語言轉換為可讀的虛擬 C 代碼,大幅加快對迴圈和條件式的理解。

在您理解每個函式時為其註釋名稱。將 sub_401020 重新命名為 decrypt_config 會立即讓分析的其餘部分更容易追蹤。

動態分析:觀察其運行

靜態分析的功用有限,尤其是對於難懂化或封裝的代碼。在除錯器中載入二進制檔案,並在之前識別的可疑 API 呼叫處設置中斷點。在 x64dbg 中,在 VirtualAllocWriteProcessMemory 處中斷通常會揭示解封裝例程,因為它們在執行前將解密的代碼寫入記憶體。

在 Linux 上使用 Process Monitorstrace/ltrace 實時記錄檔案、登錄和網路活動。這個外部檢視補充了除錯器的內部檢視,並經常揭露在反組譯中難以發現的行為,例如臨時檔案建立或 DNS 查詢。

對於支援網路的二進制檔案,在 Wireshark 或類似 INetSim 的虛假網際網路模擬器旁執行它們,以觀察命令與控制流量,而無需讓樣本實際連線到網際網路。

處理防分析技巧

許多二進制檔案 — 尤其是惡意軟體 — 包含旨在偵測除錯器、虛擬機器或沙箱的檢查。常見技術包括呼叫 IsDebuggerPresent、檢查特定於 VM 的登錄機碼,或測量執行時間以偵測單步執行。當您在靜態分析中發現這些檢查時,您可以在除錯器中修補條件跳躍以強制

本文章由 AI 協助生成並發布至 Korra Studio 知識庫。發現錯誤?請告訴我們。

現場筆記

準備更深入?

將這些現場筆記化為實戰技能 — 在 DEFENSE_GRID 上部署至相關戰術模組。

bolt 建立免費帳戶

相關戰術模組

arrow_back所有現場筆記 grid_view探索作戰庫