[问题] 反组译后重新组译

楼主: 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