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

作者: a07051226 (葡萄糖)   2015-10-05 23:55:05
查過網路上的資源,不過好像沒有找到我的問題
就是說假設我gcc出一個c的可執行檔a.out
然後a.out進行objdump -D輸出成b
那之後有沒有辦法重新組譯回去成執行檔?
我gcc b 都會出現
b: file not recognized: File format not recognized
collect2: 錯誤:ld 回傳 1
請問是我方法錯誤嗎?
作者: leolarrel (真.粽子無雙)   2015-10-06 11:21:00
把檔名b 改成b.s 試看看說錯了,是b.S ,副檔名是大寫的S
作者: tsoahans (ㄎㄎ)   2015-10-06 19:18:00
as b
作者: leolarrel (真.粽子無雙)   2015-10-07 15:20:00
那這樣看來objdump的輸出不能拿來直接組譯了,你要自己加工
作者: descent (「雄辯是銀,沉默是金」)   2015-10-07 22:11:00
你是只有把組合語言部份抓出來,還是整個結果用 gcc 重編
作者: bdvstg (bdvstg)   2015-10-08 12:31:00
你用gcc -S xxx.c 去拿到.s檔 這.s是可以組譯的比較這個.s 跟objdump的結果 應該會發覺差很多才對關於你想做的stackoverfloaw的文章 http://goo.gl/GWbZMb
作者: lantw44 (#######################)   2015-10-11 14:29:00
如果只是要修改小部份內容,不改變長度的話可以考慮用HT editor 直接改 assembly / machine code要塞一整個 function 進去的話不知道 elfsh 能做到多少

Links booklink

Contact Us: admin [ a t ] ucptt.com