反编译 Linux 操作系统

2021-01-25 08:10:15 +08:00
 downstairs

并不是为了要获取系统的源码,因为 linux 源码本身就是开源的 只是想问下技术方面的可行性, 如果一个操作系统文件。例如 CentOS 或者 Alpine 系统在由源码 build 后 再逆向,能得到原来的代码吗? 源码本身就是 C,逆向为 C 后,除了变量名字可能是乱码外,还有其他影响吗?

5746 次点击
所在节点    Linux
29 条回复
w292614191
2021-01-25 08:34:45 +08:00
把你想破解的东西发上来,自有大神。
asmmt
2021-01-25 08:34:54 +08:00
首先逆向得到的是汇编代码,就算用 ida 之类的工具得到 C 代码,也不可能直接能运行。你自己写个 c 语言小程序,逆向一下看看吧。
zwy100e72
2021-01-25 09:18:22 +08:00
c / c++ 编译器编译时会进行很多优化,会导致反编译后的代码可读性下降很多

反编译到源码最多用来帮助理解,理解后可以按照正常的逻辑再写一遍
yolee599
2021-01-25 09:41:16 +08:00
反不出原来的源码,只能得到优化后的代码。可读性非常差。
BrettD
2021-01-25 09:52:17 +08:00
编译器的优化能把原来的程序变成亲妈都不认识
darksword21
2021-01-25 09:56:47 +08:00
@BrettD #5 大早上班车上看乐了😂
fiveelementgid
2021-01-25 09:58:35 +08:00
@BrettD 这个是真的,优化一言难尽
f6x
2021-01-25 10:06:43 +08:00
问题是,,, 就算把编译前的源码给个常人, 轻易也看不懂啊.
更何况是反编译出来的一堆伪 c 汇编.
现在的 kernel 有 3000 多万行了吧.
:)
lasuar
2021-01-25 10:14:31 +08:00
5L 讲得没毛病,你想想假如你的程序 1w 行代码有 9999 个空行,只有一句 print,编译器难道不会过滤空行吗。当然了,这是举个栗子。还有深层次的优化;再举个例子,A 和 B 两种代码样式最终可能用更简洁效率的 C 样式完成, 那编译器当然会优化为 C,这个时候当然不可能推断出原来的写法。
tabris17
2021-01-25 10:20:51 +08:00
理论上编译器优化会导致信息丢失的,所以不可能通过反编译还原成 C 代码,有 ASM 读一下就可以了
AlohaV2
2021-01-25 10:21:38 +08:00
真要试试反编译的话,搜一下老毛子的"IDA"这个软件
sujin190
2021-01-25 10:23:56 +08:00
要是能才怪,那 windows 不早就被人反编译完了,别说操作系统了,你自己写个程序这种比较规则的代码想完整反编译都比较难,更别说操作系统系统了,反编译查查某些隐藏 api 实现啥的或许还是可以行的,java 这种由 jvm 运行抽象度比较高的反编译可能完整性还相对还好一些
sadfQED2
2021-01-25 10:28:26 +08:00
反编译过 java 代码,基本上还能看懂,但是 bin 文件反编译后是汇编代码啊,kernel 的 bin 文件反编译,估计你花一辈子也不一定能看完
AoEiuV020
2021-01-25 10:46:39 +08:00
c/c++从来都没有反编译拿源码的,
反编译都是为了看汇编,
JosephHan
2021-01-25 12:19:35 +08:00
感叹,新一代的程序员都不从汇编开始学起了啊,这种基础问题还特意问一下。
no1xsyzy
2021-01-25 12:31:38 +08:00
首先,所有的宏都被展开了
其次,优化很牛逼
再次,所有的东西被 LD 到一起了,只有一个巨大的 .c,最多再来个巨大的 .h
cmostuor
2021-01-25 12:35:37 +08:00
c\c++这类偏向底层的语言不能通过反编译完整的获取源代码, 大多数都是通过反编译看汇编和伪代码写行为和功能与被反编译程序类似的代码 比如著名的 ReactOS 就是通过反编译 xp 内核和参考 wine 而 wine 能在 Linux 运行 win 的应用也是通过反编译看汇编和伪代码写的
nicevar
2021-01-25 12:46:32 +08:00
@JosephHan 现在年轻一代都是前端起步的多,很多都不了解了,计算机技术是有断层的,经常可以看到一些人分享的东西以为发现了新大陆,其实是十几年前旧东西,就好像安卓 so 的一些加密加壳或者 loader 方面的,看起来很高大上,相比 windows 下曾经经历过的是小儿科,windows 下的安全对抗真的发展到了极致,很难想象曾经有些人花了好几年把一个商业软件完全反编译给克隆出来了。
DejaVud
2021-01-25 14:19:11 +08:00
@nicevar 是的!当年在看雪上看到大佬把 Sandboxie 逆向重写出来,真的是把我幼小的心灵震给撼到了.
neoblackcap
2021-01-25 16:20:41 +08:00
@DejaVud Windows 上面很多研究都是逆向的。最厉害的莫过于《 Windows Internals 》一书里面的东西,作者不是微软的人,却请出给 Windows 开发组培训
PS:sandboxie 现在好像是开源了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX