[問題] 反組譯後重新組譯

看板LinuxDev作者 (葡萄糖)時間9年前 (2015/10/05 23:55), 9年前編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
查過網路上的資源,不過好像沒有找到我的問題 就是說假設我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://www.ptt.cc/bbs/LinuxDev/M.1444060510.A.60A.html

10/06 11:21, , 1F
把檔名b 改成b.s 試看看
10/06 11:21, 1F

10/06 11:24, , 2F
說錯了,是b.S ,副檔名是大寫的S
10/06 11:24, 2F
會出現一堆 Error: junk at end of line, first unrecognized character is `9' 這樣的錯誤訊息

10/06 19:18, , 3F
as b
10/06 19:18, 3F
結果一樣 如果我沒記錯gcc 一樣會調用as來處理不是? ※ 編輯: a07051226 (1.160.211.115), 10/06/2015 23:36:58

10/07 15:20, , 4F
那這樣看來objdump的輸出不能拿來直接組譯了,你要自己
10/07 15:20, 4F

10/07 15:20, , 5F
加工
10/07 15:20, 5F

10/07 22:11, , 6F
你是只有把組合語言部份抓出來,還是整個結果用 gcc 重編
10/07 22:11, 6F
objdump後改都沒改就直接gcc ※ 編輯: a07051226 (1.160.211.115), 10/08/2015 07:05:45

10/08 12:31, , 7F
你用gcc -S xxx.c 去拿到.s檔 這.s是可以組譯的
10/08 12:31, 7F

10/08 12:32, , 8F
比較這個.s 跟objdump的結果 應該會發覺差很多才對
10/08 12:32, 8F

10/08 12:36, , 9F
關於你想做的stackoverfloaw的文章 http://goo.gl/GWbZMb
10/08 12:36, 9F

10/11 14:29, , 10F
如果只是要修改小部份內容,不改變長度的話可以考慮用
10/11 14:29, 10F

10/11 14:30, , 11F
HT editor 直接改 assembly / machine code
10/11 14:30, 11F

10/11 14:30, , 12F
要塞一整個 function 進去的話不知道 elfsh 能做到多少
10/11 14:30, 12F
文章代碼(AID): #1M4frUOA (LinuxDev)
文章代碼(AID): #1M4frUOA (LinuxDev)