常驻型计算机病毒工作原理,复习计算机病毒分析与防范

常驻型计算机病毒工作原理,复习计算机病毒分析与防范

复习计算机病毒分析与防范

2016-04-25

引导型病毒的工作原理

在BIOS后,操作系统前,通过中断服务程序(向量表 INT 13H),占据物理位置(常驻内存高端),替换、截获系统中断从而伺机传染发作。

主引导扇区BS的结构

MBR主引导记录、DPT(Disk Partition Table)分区信息、结束标志(AA55H)。

DPT结构(16字节)一字节:分区状态、活动分区判定

一字节:开始磁头

.75字节(00 0001):右边六位为起始扇区号

1.25字节 上面左边两位加上这里八位:起始柱面号

一字节:分区类型,0B为FAT32,83为Linux,07为ntfs,05是扩展分区

三字节:分区结束的磁头,扇区,柱面号

四字节:线性寻址方式下的分区相对扇区地址

四字节:该分区占用的 总扇区数

PE文件结构

MZ文件头(4D5A),DOS插桩程序,NT映像头(Signature、FileHeader、OptionalHeader),节表,节(包含引入引出节)。

为什么要重定位技术

病毒要用到变量,但依附到程序上时位置变化就不能正常使用,这里需要用到重定位。

如何实现重定位call跳到下一条指令,使下一条指令感染后的实际地址进栈。

用pop或mov exx,[esp] 去除栈顶内容,这样就得到了感染后下一条指令的实际地址。

令V_start为感染前call的下一条指令地址。Var_lable为感染前变量地址。于是变量Var的实际地址为Base + (OffSet(Var_Lable) – OffSet(V_start))

蠕虫和普通病毒的对比

病毒:寄生存在、插入宿主复制、宿主运行时传染、针对本地、user触发、影响文件系统、user水平决定传播、摘除还原

蠕虫:独立存在、拷贝自身复制、系统漏洞传染、针对网络、自身触发、影响网络系统性能、user水平不影响、补丁还原

判断PE文件的方法

mz头4d5a,pe头(nt映像头signature)50450000。

感染PE文件的方法/如何实现添加新节判断MZ、PE、感染标记

获得数据目录Directory个数(每个8字节)

获得节表起始位置(Directory偏移地址+目录字节数)、最后节表的末尾偏移(节表起始位置+节个数*28H)

新节写入节表节名8

节的实际字节数4

本节开始偏移地址(上一节开始偏移地址+(上节大小/节对齐+1)*节对齐)

本节对齐后大小

本节在文件中的开始位置(上节文件开始位置+上节对齐后大小)

修改nt映像头节表数

替换AddressOfEntryPoint为病毒入口

更新pe映像尺寸SizeOfImage(原SizeOfImage+病毒节对齐后大小)

写入感染标记,病毒代码,设置当前位置为文件末尾

系统引导过程开机

BIOS加电自检,电源稳定后,CPU从内存地址ffff:0000处开始执行

BS读入 0000:7c00

检查0000:7def 是否为0xaa55

跳转到0000:7c00处执行MBR

以下由MBR程序执行

MBR将自己复制到0000:0600处

在主分区表中搜索是否有活动分区

将活动分区的第一个扇区读入0000:7c00

检查0000:7def 是否为0xaa55

跳转到0000:7c00处继续执行启动程序

病毒如何常驻内存

将自身复制到内存高端(10 0000H之后),修改内存容量标志单元(0000:0413处),减去病毒长度,使得常驻内存;然后将原int 13h磁盘中断服务程序的中断向量保存,并修改其指向病毒代码

引导型病毒特点在操作系统之前进入内存

减少操作系统所掌管的内存大小

修改int 13h 的中断向量,指向内存高端

必定驻留硬盘的主引导扇区或引导扇区,并且只驻留一次

把感染的主引导扇区或引导扇区和未感染的进行比较,若不一样,有毒。

节表

储存了每个节(数目由NumberOfSection决定)的具体信息,每个节信息大小为28H/40。

引入引出节

引入表exe:是用来描述可执行文件需要调用的外部函数(API)。

引出表dll:DLL向PE提供的导出函数信息的列表,通常这些信息包含了导出的函数名和函数的地址。

动态获取api

LoadLibrary加载一个DLL,返回DLL地址。

GetProcAddress通过DLL地址和API函数名获得API函数的地址。

木马结构

木马软件一般由木马配置程序、控制端程序和被控端程序三部分组成。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111266.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux使用SCP进行文件传输

    Linux使用SCP进行文件传输本章内容基于CentOS6.5(32位)scp就是securecopy,是用来进行远程文件拷贝的。数据传输使用ssh,并且和ssh使用相同的认证方式,提供相同的安全保证。scp不需要安装额外的软件,使用起来简单方便,安全可靠且支持限速参数但是它不支持排除目录为了学习SCP命令我创建了3个Linux虚拟机,其ip地址分别位192.168.132.130、192.168.132.1…

    2022年8月22日
    3
  • 批处理for循环_批处理循环语句

    批处理for循环_批处理循环语句一个非常简单的批处理命令,循环一个目录下的子目录,并将该子目录下的文件复制到新建文件夹下。@echooffsetoutpath=c:\out\setinpath=c:\in\for%%Iin(20200701,20200702,20200703,20200704,20200705,…

    2022年10月12日
    0
  • XOR问题

    XOR问题在Rosenblatt单层感知机中已经对异或问题做了介绍,并论证说明了只适用于线性分类问题的Rosenblatt感知机无法对异或问题进行分类。然而非线性问题是普遍存在的,下面就使用带隐藏节点的神经网络来解决异或问题。异或问题:异或(XOR)问题可以看做是单位正方形的四个角,响应的输入模式为(0,0),(0,1),(1,1),(1,0)。第一个和第三个模式属于类0,即和…

    2022年7月16日
    26
  • 对口计算机一分一档2019河北,最新!2019河北高考一分一档统计表公布![通俗易懂]

    对口计算机一分一档2019河北,最新!2019河北高考一分一档统计表公布![通俗易懂]免费申请学习规划请选择学习阶段学前小学初中高中大学留学其他已为25937位学员提供学习规划*验证码*短信验证码{“text1”:{“label”:”薄弱科目”,”placeholder”:”请输入你的薄弱科目”,”required”:1,”formType”:”text”,”group”:”dynamic”,”name”:”text1″,”type”:”text”,”data”:[]},”cour…

    2022年7月13日
    41
  • springboot quartz 动态添加任务(quartz分布式定时任务)

    看了好多文章,都只讲了基础的demo用法,也就是简单的创建运行定时任务,对定时任务的管理却很少。我这里从0开始搭建一个简单的demo,包括定时任务的各种操作,以及API的一些用法,可以实现大多场景的需求。如:普通定时任务的创建、启动、停止。 动态创建定时任务,如创建一个订单,5分钟后执行某某操作。一、整个Quartz的代码流程基本基本如下:首先需要创建我们的任务(Job),比如取消订单、定时发送短信邮件之类的,这是我们的任务主体,也是写业务逻辑的地方。 创建任务调度器(Schedul..

    2022年4月17日
    41
  • JVM内存分配与管理详解

    JVM内存分配与管理详解概述了解C++的程序员都知道,在内存管理领域,都是由程序员维护与管理,程序员用于最高的管理权限,但对于java程序员来说,在内存管理领域,程序员不必去关心内存的分配以及回收,在jvm自动内存管理机制的帮助下,不需要想C++一样为每一个new操作去编写delete/free代码,这一切交给jvm,但正是这一切都交给了jvm,一旦出现内存泄漏与溢出,如果不了jvm,那么对于程序的编写与调试将会非常

    2022年6月1日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号