
(2)文件病毒
文件类型病毒主要是感染可执行文件(PE文件),例如EXE和COM的病毒. 该病毒会修改主机文件,并将其自己的代码添加到主机文件中. 当执行主机程序时,病毒程序将在执行主机程序之前执行
1. 感染COM文件:
对于COM文件,在系统加载后,经过一系列处理后,所有文件都将读入内存,并且将控制权交给文件的第一条指令. 如果该指令完全是病毒指令,则该病毒将获得控制权. 带毒文件的COM后缀具有两种结构:
?病毒的主体位于原始文件的后面. 该病毒用程序(或简单的
)替换了原始文件头
使用跳转指令)指向以下病毒体,然后在该位置恢复原始指令. •整个病毒在原始文件之前. 病毒体在加载时直接获得控制权文件型病毒一般感染,而不会破坏原始程序.
什么部分.
2. 感染的EXE文件:
EXE后缀文件不同于COM后缀文件. 它具有特殊的“文件头”结构,在其中装载文件重定位信息而不是可执行指令.
系统加载EXE后缀文件时,根据文件头信息定位文件,并在入口处设置堆栈指针和代码指针. 病毒感染EXE后缀文件时,通常会将文件头的代码指针指向病毒条目. 系统加载后,病毒首先获得控制权.

该病毒需要将自身复制到EXE文件,需要进行的主要更改是: ?写一个新的部分(病毒的主体)
?将新的节标题添加到节表中
?修改PE文件头文件头中的相应字段(例如NumberOfSections)?修改程序入口点的地址
其中,修改程序入口点的地址非常重要. 这样可以确保在运行主机文件时,系统先执行病毒程序.
(3)Python文件
python源代码py文件将在运行时编译为字节码,并将编译后的结果保存到PyCodeObject. pyc文件是将PyCodeObject从内存保存为元帅格式的文件的结果.
Python中定义的PyCodeObject的结构
typedef struct {
PyObject_HEAD
int co_argcount; / *#参数,除了* args * / int co_nlocals; / *#局部变量* /
int co_stacksize; / *#评估堆栈所需的条目* / int co_flags; / * CO _...,请参见下文* /

PyObject * co_code; / *指令操作码* / PyObject * co_consts; / *列表(使用常量)* /
PyObject * co_names; / *字符串列表(使用的名称)* /
PyObject * co_varnames; / *字符串元组(局部变量名称)* / PyObject * co_freevars; / *字符串元组(自由变量名)* / PyObject * co_cellvars; / *字符串元组(单元变量名称)* // *其余的不计入hash / cmp * /
PyObject * co_filename; / *字符串(从何处加载)* / PyObject * co_name; / *字符串(名称,仅供参考)* / int co_firstlineno; / *第一个源行号* /
PyObject * co_lnotab; / *字符串(编码addrlineno映射),有关详细信息,请参见Objects / lnotab_notes.txt. * /
void * co_zombieframe; / *仅用于优化(请参阅frameobject.c)* / PyObject * co_weakreflist; / *支持对对象的弱引用* /} PyCodeObject;
一些字段argcount的含义: 参数数量
nlocals: 局部变量(包括参数)的数量stacksize: 堆栈的大小
标志: 用于指示参数: 字节码中是否存在* args或** kwargs代码
名称: 全局变量,函数,类和类方法的名称
varnames: 局部变量(包括参数)的名称const: 常量表

pyc文件是嵌套的PyCodeObject结构的组合. 对于每个函数或类方法,都会生成一个对应的PyCodeObject结构.
通过调用以下函数来运行所有PyCodeObject: PyObject * PyEval_EvalFrameEx(PyFrameObject * f,int throwflag)
它的作用是执行中间代码. 通过调用此函数来运行Python代码.
通过以上分析,我决定使用python代码执行的特性在Linux下使用python编写“文件病毒”.
四,实验所需的硬件和软件
操作系统: ubuntu16.04 LTS虚拟机
软件: Python2.7.11 +
五个实验步骤
(1)程序框架
我决定使用python编写文件类型病毒,因为我想反映文件类型病毒的特征,而不必深入到底部来计算字节数. 该程序包括以下模块:
1. 传播感染模块

找到符号条件的宿主文件,然后将其自身添加到宿主文件中.
为了隐藏自己,不是将所有病毒本身复制到受感染的文件中,然后用户可以轻松找到它. 我的方法是在隐藏位置创建病毒的备份,以便在将病毒写入主机文件时,不会显式写入病毒,而只需通过import语句引用即可达到相同的效果.
2. 备份模块
我选择将备份文件放在“ / home / current user”目录中. 因为在Linux的其他根目录(例如/ usr和/ bin)中,创建文件需要root权限,并且用户通常不在root权限下运行,这涉及特权升级的问题. 我还没有想到解决方案,因此暂时选择了“ / home / current user”目录.
3. 触发并销毁模块
日期触发. 在一周的每个星期四,用户将执行受感染的.py文件,并执行已损坏的模块.
系统重新启动. 从理论上讲,攻击模块可以任意定制,但是要注意,如果引用了python的某些特殊模块,则可能未安装受害主机系统文件型病毒一般感染,并且在执行程序时会发生错误.
(2)具体实现
备份模块
感染模块
触发条件判断和破坏功能
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-204715-1.html
俄国重心在欧洲所以放弃在华利益
把群里的人全部拉来了我够了吧