作者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/cn.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