作者a07051226 (葡萄糖)
看板LinuxDev
標題[問題] 反組譯後重新組譯
時間Mon Oct 5 23:55:05 2015
查過網路上的資源,不過好像沒有找到我的問題
就是說假設我gcc出一個c的可執行檔a.out
然後a.out進行objdump -D輸出成b
那之後有沒有辦法重新組譯回去成執行檔?
我gcc b 都會出現
b: file not recognized: File format not recognized
collect2: 錯誤:ld 回傳 1
請問是我方法錯誤嗎?
--
Java Android程設學習中
Github歡迎討論
https://github.com/HybridGlucose
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.231.10
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LinuxDev/M.1444060510.A.60A.html
1F:→ leolarrel: 把檔名b 改成b.s 試看看 10/06 11:21
2F:→ leolarrel: 說錯了,是b.S ,副檔名是大寫的S 10/06 11:24
會出現一堆
Error: junk at end of line, first unrecognized character is `9'
這樣的錯誤訊息
3F:→ tsoahans: as b 10/06 19:18
結果一樣
如果我沒記錯gcc 一樣會調用as來處理不是?
※ 編輯: a07051226 (1.160.211.115), 10/06/2015 23:36:58
4F:推 leolarrel: 那這樣看來objdump的輸出不能拿來直接組譯了,你要自己 10/07 15:20
5F:→ leolarrel: 加工 10/07 15:20
6F:→ descent: 你是只有把組合語言部份抓出來,還是整個結果用 gcc 重編 10/07 22:11
objdump後改都沒改就直接gcc
※ 編輯: a07051226 (1.160.211.115), 10/08/2015 07:05:45
7F:→ bdvstg: 你用gcc -S xxx.c 去拿到.s檔 這.s是可以組譯的 10/08 12:31
8F:→ bdvstg: 比較這個.s 跟objdump的結果 應該會發覺差很多才對 10/08 12:32
10F:→ lantw44: 如果只是要修改小部份內容,不改變長度的話可以考慮用 10/11 14:29
11F:→ lantw44: HT editor 直接改 assembly / machine code 10/11 14:30
12F:→ lantw44: 要塞一整個 function 進去的話不知道 elfsh 能做到多少 10/11 14:30