起因是在知乎看到了 如何评价 Ken Thompson 在 C 编译器里植入了后门这件事?

然后在到了USTC 李博杰同学写的很有意思的文章 给开源编译器插入后门

然后看了下Ken Thompson老爷子的原文 Reflections on Trusting Trust

    文中,老爷子回忆了和Dennis Ritchie的基情岁月,他说他们写了一段一模一样的20行的汇编程序,每个字符都一样….然后老爷子从他的大学生活开始说,那个时候并没有Video Game,所以他们的娱乐方式为提问题,然后写程序解决.他最喜欢中的一种为写最短的可自我复制的程序,那个时候使用的语言为FORTRAN,使用FORTRAN的原因和three-legged races 流行的原因一致(这里并不能理解….)

更准确的说法是写出一个代码,编译执行会产生同样的代码

Py版如下

s = ["print \"s =\", s","for i in s: print i"]
print "s =", s
for i in s: print i     

然后由于C的编译器是由C编写的.可以修改C编译器的代码,是其在编译指定程序时生成利用代码,在编译自身时复制自身…有点绕.具体的请参照开头给出的链接,这里不再赘述.

文章末尾,老爷子提醒了我们,任何不是自己编写的程序都不能够完全信任,尤其是雇佣了像他一样的人的大公司(老爷子的自我调侃),源码级别的检查并不能保证你的安全,威胁可能来自assembler,loader,甚至hardware microcode.越底层的bug越难以发现.

最后老爷子提醒我们,随意破坏和闯入他人的计算机系统是不道德的. 

让我们一起把Kali删掉吧 : )