我是否有可能编写破坏编译器的代码?意味着糟糕的编程习惯会导致这样的情况,我可能最终会伤害编译器,我假设我编写的代码不是某种专门为此而设计的病毒?
答案 0 :(得分:1)
没有。至少不是偶然的(当你提到“糟糕的编程习惯”时,我假设你在谈论这个)
通常,无论你做什么对编译器二进制文件都没有影响,所以即使你设法破坏内存,当重新启动编译器时它也会被完全“修复”。
此规则的一个主要例外是,如果您实际更改了编译器二进制文件(例如,使用文件I / O API重写可执行文件),但这是非常难以做到的。
破坏编译器并不容易。您可能必须在编译器中找到安全漏洞,然后利用它来更改结果。很难做到,因此更难以获得可执行的可执行文件。
如果某人想强迫编译器生成病毒,可以采用更简单的方法:
如果您担心从Internet下载代码并编译它可能会导致病毒,那么这种担忧可能是合理的。但是,正如我之前提到的,与产生/传播病毒的替代方法相比,正确利用编译器是非常困难的。 无论哪种方式,检查源代码应该足以为实际目的解雇这些问题。
答案 1 :(得分:1)
一般来说,编译器由静态代码组成。每次运行程序时,都会从头开始重新运行静态代码。因此,只要您无权访问它,就不能破坏编译器。
有一些编程语言可以让你使用编译器进行扩展。但即使您可以扩展语言,编译器也可能会重新开始每次运行。此外,你不太可能以这种方式触发任何有害的东西。
存在编译器错误,可能会触发它们。但通常这只会导致构建失败。
现在,如果您有Makefile
,则可以更改用户有权访问的任何内容。因此构建应用程序可能会引发不必要的副作用安装脚本当然最有可能影响系统,因为它们通常以提升的权限运行。
答案 2 :(得分:0)
不,除非编译器中存在一个非常奇怪且不太可能的错误,否则这是不可能的。