iT邦幫忙

2025 iThome 鐵人賽

DAY 7
1
Security

逆向系列 第 7

逆向工程與 C 語言

  • 分享至 

  • xImage
  •  

為什麼學 C 語言對逆向工程很重要?在逆向工程(Reverse Engineering)中,常見的流程是:

  1. 從 機器碼 → 反組譯 → 得到 組合語言
  2. 再從 組合語言 → 嘗試推測出原始高階語言程式碼

大量的系統程式、驅動程式、嵌入式韌體、甚至惡意程式(Malware)都是用 C 語言 或類似的語言(如 C++)撰寫的。
因此:

  • 熟悉 C 語言能幫助我們從組合語言中快速推測原始程式碼的結構與意圖
  • 許多編譯器(GCC、Clang、MSVC)對 C 語言的編譯結果有特定的模式,這些模式能在反組譯時辨識
  • C 語言與組合語言的關係非常直接:
    變數、函式、指標、陣列、流程控制幾乎能一一對應到組合語言指令

舉例:

int add(int a, int b) {
    return a + b;
}

反組譯後(x86 組合語言可能):

add:
    mov eax, edi
    add eax, esi
    ret

若我們學過 C 語言,就能快速看出這段組合碼是在進行 將兩個參數相加並回傳


上一篇
Linux 基礎指令(五)
下一篇
逆向題目練習 - babyc
系列文
逆向30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言