gcc vv.c -o vv
gcc hello.c -o hello
gcc aplusb.c -o aplusb
vv
是病毒母体,执行完成后有概率断错误
hello
是简单的hello world
aplusb
是a+b
展示未被感染的hello
,aplusb
./hello
hello
./aplusb
2 3
5
展示感染
./vv
每次感染会感染当前目录下一个未被感染的可执行文件
一般来说会按照字典序,如果没有什么意外,aplusb
会被感染
infected
victim is aplusb
infect aplusb
执行aplusb
展示其感染hello
并正常执行旧程序
./aplusb
infected
victim is hello
infect hello
2 3
5
执行hello
,vv
虽然是病毒母体但是它并没有被感染,所以会看到
./hello
infected
victim is vv
infect vv
hello
再次执行,目录下没有可感染程序
./hello
infected
hello
g++ embeder.cpp -o embeder -std=c++11
./embeder <embed.c >quine.c
gcc quine.c -o quine
quine.c
输出I am Quine
,并且在文件myself.c
中输出自身代码
rm myself.c
./quine
I am Quine
diff quine.c myself.c
展示quine.c
与myself.c
完全相同