iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Security

逆向系列 第 13

組合語言筆記 - 常見工具

  • 分享至 

  • xImage
  •  

前言

在進行逆向工程、程式分析或惡意程式研究時,僅僅依靠原始碼往往是不夠的——有時候甚至根本無法取得原始碼。
因此,我們需要從多個層面深入分析二進位檔,透過檢視其中的字串、反編譯機器碼、追蹤執行流程,甚至監控執行時的暫存器變化,全面理解程式碼。

這些工具的常見組合分析流程如下:
使用 strings 撈出檔案裡的可讀字串找線索,
再用 objdump 或 Radare2 / IDA Free 去反組譯、看結構,
最後用 GDB + GEF 在執行時追蹤其行為。

  1. strings
  • 用途:從檔案(尤其是二進位檔)中列出可讀的字串(ASCII / Unicode)。

  • 典型用途:

    • 找出可疑的訊息、URL、金鑰、錯誤提示。
    • 在惡意程式中快速定位有用資訊。
  • 範例:

    strings malware.exe | grep password
    

    這可以列出檔案中所有包含 password 的字串。

  1. objdump
  • 用途:
    顯示可執行檔或目標檔(.o)的資訊,包括反組譯結果。
    使用其工具,出來的是 AT&T 語法

  • 典型用途:

    • 檢查程式的匯編碼(assembly)。
    • 查看符號表、函數位址。
  • 常用指令:

    sudo apt install binutils   安裝
    
    objdump --version 查看版本
    
    objdump -M intel -d ./執行檔 查看反編譯結果(為 intel 語法)
    
    objdump -d program     # 反組譯
    objdump -t program     # 顯示符號表
    
    
  1. Radare2
  • 用途:開源的逆向工程框架,功能很全,適合深入分析二進位檔。
  • 特色:
    • 反組譯、反編譯、偵錯、修改二進位檔。
    • 支援多種架構(x86、ARM、MIPS…)。
  • 常用啟動:
    r2 binaryfile
    
  1. IDA Free (Interactive DisAssembler)
  • 用途:互動式反組譯工具,會將機器碼轉換成可讀的組合語言。
  • 特色:
    • 圖形化介面(函數流程圖)。
    • 支援多架構。
    • 免費版功能有限(沒有偵錯器,支援架構較少)。
  1. GDB (GNU Debugger) + GEF
  • 用途:Linux 上的強大偵錯器,可逐行執行程式、檢查暫存器、記憶體。
  • GEF(GDB Enhanced Features):
    • GDB 的外掛套件,提供更美觀、更方便的介面(彩色輸出、堆疊/暫存器視圖)。
  • 常用指令:
    gdb ./program
    (gdb) break main    # 在 main 設斷點
    (gdb) run           # 執行程式
    (gdb) next          # 單步執行(跳過呼叫)
    (gdb) stepi         # 單步執行(進入呼叫)
    
    

上一篇
組合語言基礎筆記 - 暫存器是什麼?
下一篇
組合語言筆記 - 工具下載
系列文
逆向30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言