写给新手看的,研究的时间不长,难免有的地方有问题,不要笑,会打击自信心D哦!~
前提需知:
以下所说的病毒是指病毒、木马、蠕虫、黑客工具等。
特征码:如果程序是一张烙饼,那特征码就像上面的芝麻,每一张饼上面的芝麻位置是不同的,所以每个程序包括病毒特定位置上面的字符也是不同,这粒用来识别是不是病毒的“芝麻”就是特征码
一。杀毒软件工作方式
1.文件查杀(特征码位于PE文件头处),杀毒软件代表:诺顿
2.文件查杀(特征码位于代码段内),杀毒软件代表:卡巴斯基(简称:卡巴)
3.内存查杀(可防止加壳病毒躲过杀毒软件,病毒运行中可以查杀),杀毒软件代表:瑞星
二。躲过杀毒软件的途径(通常所说的免杀处理)
1.加壳
a.加压缩壳
b.加密壳
c.加生僻壳
d.多重壳
e.伪装壳
f.打乱壳的头文件
2.修改特征码
3.修改程序
a.修改入口地址
b.入口地址+1
c.使用相同效果指令替换原指令
d.加花指令
三。详解
1.加壳
如果说程序是一张饼,那壳就是包装袋,可以让你发现不了包装袋里的东西是什么,打过包装后当然会看起来大一点,程序也一样,文件会变大一点,当然,也有例外,比如压缩壳(壳的一个种类),就好象压缩饼干,包装后东西变小了。壳一般分两种,一种是加密壳一种是压缩壳,用加密壳加过之后程序会变大,而压缩壳会使程序变小,当然,有的壳不仅可以加密还能压缩。比较常见的壳一般容易被杀毒软件识别,所以加壳有时候会使用到生僻壳,就是不常用的壳。现在去买口香糖你会发现至少有两层包装,所以壳也可以加多重壳,让杀毒软件看不懂。如果你看到一个袋子上面看到上面写着干燥剂、有毒之类的字你也许就不会对他感兴趣了吧,这就是伪装壳,把一种壳伪装成其他壳,让杀毒软件犯傻。而打乱壳的头文件也是相近的方法,都是让杀毒软件识别不出来的方法。
附:常见的压缩壳
UPX
ASpack
Petite
PECompact
PE-PACK
WWPack32
NeoLite
Shrinker
PKLITE32
常见的加密壳
ASProtect(最难脱的壳,压缩技术也好)
tElock
Armadillo(加密后文件会变大很多)
SVK Protector
Xtreme-Protector
Obsidium
PElock
2.修改特征码
这个最好用了,加壳可以过文件查杀但过不了内存查杀,比如瑞星,病毒要想过瑞星的文件查杀很容易,把入口点的第一句PUSH EBP改成POP EBP或者加壳都可以,但运行时却会被瑞星杀出来,所以要想通过瑞星的内存查杀,唯一的办法,改特征码。目前的内存查杀只有瑞星才有效果,其他基本没什么杀毒软件有用,卡巴的文件查杀很强,但只要能过卡巴的文件查杀的病毒,一般都能过卡巴的内存查杀。瑞星的内存查杀由于技术方面的原因,它的特征码通常定位为某些字符串,就是特定位置上的字符串,这样要想过瑞星的内存查杀就容易多了。用UE编辑病毒文件,用0刷掉某个字符串,然后用OllyDbg载入,使用瑞星内存查杀的方法来定位出特征码,定位出后就好办了,由于是字符串,只要改动部分大小写一般不会影响病毒的运行,但能通过瑞星的内存查杀。
躲过文件查杀的方法就有很多了,修改特征码,加壳,修改程序都行。其实修改程序有一部分也是修改特征码,但修改特征码不能说是修改了程序。通常定位特征码的位置都是通过CCL这个软件来定位,但有的时候效果不好,比如存在多个特征码的时候,而且特征码之间分的距离比较大,CCL往往就定位不出来了,所以有很多人用CCL定位卡巴特征码的时候会只发现最前面两个字符的特征码,而没有其他的,其实那是误导,改动前面两个字符确实能过卡巴,但程序不能运行了。真正的特征码没有被找出来。原因就要说到CCL的定位方法以及手工定位方法了。
CCL定位的方法:自动创建N个病毒文件样本,每个样本根据需求把一定量的连续字符用其他字符代替,所以特征码可能被替换掉,然后使用杀毒软件查杀,能通过的病毒样本表示此样本被修改处含有特征码,所以顺利的定位出特征码所在的位置,当然有一种情况会导致此方法失败,那就是:存在两段或多段特征码,而各段特征码之间的距离比较远则病毒样本中字符替换时只替换掉一处或几处,没有全部被替换掉,导致病毒仍然被杀毒软件kill掉。解决此问题的方法就是手动定位,采用CCL背道而驰的方法。CCL的病毒样本是把部分代码用某字符替换,我的手动方法是留下部分代码,把大部分的代码用某个字符替换掉,杀毒软件能杀掉的病毒样本就是有病毒特征码的样本了,和CCL刚好相反。当然这种方法虽然有效果但实在是累人啊,手动替换太累,所以更好的方法就是结合手动和CCL来定位。但这需要比较了解特征码定位方法,这里就不相信解释了,有需要的人可以直接找我说的会比较清楚。
特征码定位出来后就好解决了,一般是用OC找出内存地址,然后用OllyDbg载入,找到特征码位于的地址,在此地址用JMP命令跳转到空白处执行该段地址内的指令,然后再跳回去,原来地址上的指令就用NOP刷掉了,这就是通用跳转法,最有效果,最好用了。当然也可以把特征码段的指令改成效果相同的其他指令一样也可以,这需要对汇编比较了解了,这年头懂汇编的人开始少的可怜了。当然有的时候在入口前加上花指令或者代码某段加上花指令也是很有效果,而且不需要去定位特征码,这是因为花指令执行没什么意义,就是在程序中乱跳,跳来跳去把杀毒软件跳糊涂了就好了。修改完特征码后卡巴就完蛋了。
完了么?NO,还有个家伙,is 诺顿,why?诺顿喜欢把特征码定位在PE头文件中,真是个BT的家伙,因为OllyDbg载入后你不会发现PE头文件的代码的。当然,诺顿是很容易解决的,比如用UPX加密后用秘密行动这款软件可以把PE头打乱,这样特征码肯定也乱掉了。
至此3种类型的杀毒软件的免杀方法就已经解释完了,大家应该清楚的了解了自己中了病毒但杀毒软件却杀不掉了吧,或者有的杀毒软件能杀有的不能杀,这不能说是某个杀毒软件比较优秀,只是病毒的制造者或者病毒的改造者针对某个杀毒软件修改过使这个杀毒软件失去效果了而已。
总结:免杀就三句话:瑞星90%特征码字符串,卡巴看后缀,诺顿加壳打乱PE头。
研究了几天,搞的现在对杀毒软件都没信心了,几年前被金山骗过钱,发誓再也不买杀毒软件了。






