Thursday, September 3, 2020

用 objdump 指令觀察 ELF 檔案

 



 編譯 gcc -o test test.c

查看區段

objdump -h test

objdump -s test

s 這個參數表示要使用 16 進位表示法顯示出 object code 中的各個區段,可以看到一些 read only的資料室蠻明顯的,但是 .txt 基本上不是人看得,最後可以觀察到 .comment 這個 section 是可以省略掉的資訊

d 這個參數讓object code 可以反組譯成 assemble code,方便我們觀察程式,有些時候只能拿到library 的時候,就只能從這裡挖到一些資料了,雖然可讀性沒有 C 好,但是至少比 binary code強

objdump -x test

最後x參數可以所是列出了所有資訊,不只包含了 h 這個參數,還列出了許多 symbol table 跟一些需要重新定位 label 資訊 這裡觀察到兩個有趣的地方,兩個變數被寫進了不同的區段,有初始化的m被寫入了.data內,沒有的則被寫入了.bss,printf 不見了,其實被取代成了puts,這是compiler 優化的結果,puts 在處理只有字串的資訊比 printf 有效率,UND 表示尚未定義在這個object code 中

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能