剥离二进制/elf 程序的意义何在?

剥离二进制/elf 程序的意义何在?

我只是想知道剥离程序文件是否除了节省磁盘空间之外还有更多好处。

答案1

在大多数情况下,主要的好处只是节省磁盘空间。次要的、更可疑的好处是,它还使二进制文件更难被反汇编或逆向工程。它还可以稍微减少内存占用,尽管在许多情况下,节省的内存可以忽略不计。

最大的缺点是,如果遇到问题,它会使调试变得更加困难。

在具有当前 CPU 速度和内存/磁盘数量的现代系统上,剥离二进制文件对性能几乎没有任何实际影响。这实际上与调试、“清洁度”和个人偏好有关。有些人喜欢始终使用剥离的二进制文件进行生产或“发货”软件。有些人喜欢始终保留符号,“以防万一”。

就我个人而言,我更喜欢加入一些符号。我有过几次真的一年中,我遇到过许多令人沮丧的情况,比如商业应用程序出现分段错误(或崩溃),而我无法确定问题所在,因为二进制文件已被剥离。至少在少数情况下,供应商最终会给我发送一个未剥离的版本来运行,直到它再次崩溃,这样我们就可以获得更多有用的调试信息。如果他们一开始就提供未剥离的版本,我们就可以更快地解决问题,减少停机时间。

答案2

你可以编译带有调试符号的软件进行测试,然后在部署时删除它们。如果你的调试符号暴露了你不想暴露的东西,这可能会对你有用

相关内容