为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

特征码定位原理详解

2017-09-20 4页 doc 16KB 23阅读

用户头像

is_215732

暂无简介

举报
特征码定位原理详解特征码定位原理详解 特征码定位主要有两种方法:第一 直接替换法;第二 二叉数法; 直接替换法是最早开始出现的一种特征码定位方法。 按一定的字节数逐个替换原代码并保存,比如木马总共100字节,可以先把0-10个字节用0替换,保存,然后用杀毒软件扫描,不被查杀说明特征码已经被覆盖掉了,如果还被查杀则替换10-20字节,再保存,扫描……直到找出特征码。替换法的优点是容易理解,速度快(对文件特征码而言),特征码定位工具CCL的手动方式就是利用的替换法原理,文件特征码定位经常使用的就是这种方法。 但是对于内存特征码的定位这种 方法就不...
特征码定位原理详解
特征码定位原理详解 特征码定位主要有两种方法:第一 直接替换法;第二 二叉数法; 直接替换法是最早开始出现的一种特征码定位方法。 按一定的字节数逐个替换原代码并保存,比如木马总共100字节,可以先把0-10个字节用0替换,保存,然后用杀毒软件扫描,不被查杀说明特征码已经被覆盖掉了,如果还被查杀则替换10-20字节,再保存,扫描……直到找出特征码。替换法的优点是容易理解,速度快(对文件特征码而言),特征码定位工具CCL的手动方式就是利用的替换法原理,文件特征码定位经常使用的就是这种方法。 但是对于内存特征码的定位这种 方法就不太实用了,每次替换以后都要载入内存再扫描,如果木马较大,替换生成的文件会非常多,每个都要 载入内存花费太多时间,除此之外它还有一个非常大的局限性,就是只能确定只有一处特征码的情况(某种特 定情况下的多特征码也是适用的,下面的第3种情况将有讲述),杀毒软件还有别的定位特征码的机制,比如 有的杀毒的定义了a,b两处特征码(三处或者更多原理是一样的,为了讲解方便,以下均以两处为例),只 要a,b有一个存在便报毒,只有加大替换范围直到两处同时被替换才不报毒,如果两处距离比较远,定义出 的范围将非常粗糙,很明显直接替换法将不再合适,这时第二种方法就有用武之地了。 二叉数法使用的原理是一半一半定位。 将待检测段一分为二,分别替换并生成两个文件A和B,其中A是原文件后半部分被0替换后生成的,B是前半部分被0替换的,杀毒开始查杀生成文件(如果是内存特征码定位则先载入内存再扫描内存),有4种情况 (1)A存在,B被删:这种情况说明A文件中特征码已经被替换掉,因此将A的被替换部分一分为二,起 始偏移为A的偏移,再进行检测; (2)A被删,B存在:这种情况说明B文件中特征码已经被替换掉,因此将B的被替换部分一分为二,起 始偏移为B的偏移,再进行检测; (3)A存在,B存在:这种情况说明没法定位A和B中有没有特征码,因此分别对A和B再一分为二进行检测; (4)A被删,B被删:这种情况说明两个区段都存在特征码,因此分别对A和B再一分为二进行检测。对A再分时会将原来的B区段填充为0,相当于去除B区段的影响,只考虑A;同理对B再分时会将原来的A区段内容填0,相当于去除A区段的影响,只考虑B。 第(1)(2)对应的是只有一处特征码的情况,比较容易理解; 第(3)对应的是定义了a,b两处特征码的情况,但是和前面提到的那种不同,杀毒软件为避免误判, 定义了a,b两处特征码,要ab同时存在时才报毒,假设a,b分别存在于A,B中,a,b不同时存在,杀毒对A,B均不报警,接下来该如何判断呢?举个例子说明一下 木马原来是…a……b…,第一次替换以后A:…a…000000,B:000000…b…,现在ab不同时存在,A,B都不被杀,则分别对A,B再次一分为二,…a……b000,…a…000…,000……b…,…a000…b…,再次扫描就可以找到两处特征码的位置,如果还是不行,再继续分……直到全部找到;其实这种类型的多特征码直接替换也是可 以定位的,甚至效果更好,按一定位数替换,然后扫描,只要替换了一个特征码就不再报毒,所以不报毒的便 是特征码被覆盖的,不管有几处都可以定位出,而且修改时也只要修改任意一处就可以了。 第(4)种对应的情况也是杀毒定义了多处特征码,就是上面提到的那种情况,只要有一处符合就认定是 病毒。还是以a,b两处特征码为例,第一次替换后的结果同(3),两部分分开考虑,互不影响,相当于分解 成两个单个特征码的情况,第二次替换后变成000000…b000,000000…000…,000…000000,…a000000000,依此类推,直到精确定位出所有特征码,如果有N处特征码就相当于分解成N个单特征码来定位,现在N一般小于等于3,这种情况定位出的所有特征码必须全部修改了才能免杀。 二叉数法是个很不错的思路,可以解决大部分的问题,但是不是无懈可击呢?回答是否定的!可恶的杀毒软件还有一个杀手锏,就是复合特征码,给我们定位特征码带来了很大的麻烦。复合特征码的定位机制是,先定义出N个特征码,只要里面某些同时出现便认为是病毒。举个简单例子说明一下:木马原来是…a1…b1…c1…a2…b2…c2…(a1,a2一样,加标号只是为了后面描述方便),只要abc同时出现就认为是病毒,这该如 何定位呢?原理不是很难,也是利用替换再查杀的方法,先从后往前用0替换,替换精度假设为每次替换量增加1000字节,开始一直显示是病毒,直到替换到地址13140040(为叙述方便随便说的一个地址)时替换的字节达到15000个,即…a1…b1…00000000,两个c都被替换掉了,此时显示不是病毒,由此可知,特征码c1就在13140040后面1000字节内,减小替换字节数比如改为替换14900字节,即精度改为每次替换减小100字节,还是无毒则减为替换14800字节,不断重复……直到精确定位出c1的位置;如果改为从前往后替换,则可以定位出a2的位置;其他特征码的定位可以利用已经定位到的c1,a2,把其中一个用0替换了比如c1,从后往前就可以定位出c2,直到定位出所有特征码,其实原理并不复杂,但是要真正手动操作起来却是非常麻烦的,我们可以利用MYCCL,它用的原理与之类似,具体操作可以看MYCCL的操作帮助。还有一种方法 更科学,原理是一样,但是替换的字节数不是等量增加的,而是以2的n-1次方增加的,第一次替换1字节,第二次2字节,第三次4字节……减小时也按照这种规律,这种替换方法有点类似于二叉数法,可以更快定位 出特征码的位置,我想这也是MYCCL在复合特征码定位方面应该改进的地方吧。 复合特征码虽好,大家也不用害怕,认为所有杀毒都来个复合特征码我们就要累死了,定义复合特征码需要单个特征码几倍的病毒库,不方便用户的升级,所以除了特别流行的病毒,定义复合特征码的也不是很多。 定位特征码有些经验可以告诉大家,文件特征码的定位一般用直接替换法,可以借用MYCCL的手动定位;内存特征码定位,一般用二叉数法,可以用MYCCL自动定位。对于EXE文件如果文件较小,可以两种方法结合,先用直接替换法生成,然后载入内存,再扫描内存,如果既能正常运行又不被杀,恭喜你!成功了!定位出了大体范围,再用MYCCL自动定位,很快就可以完成。
/
本文档为【特征码定位原理详解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索