加花工具,做花的工具
关于对木马进行免杀处理
OD下载地:;ClassID=keyword=OllydbgSubmit=+%CB%D1%CB%F7+
peid下载地:;ClassID=keyword=peidSubmit=+%CB%D1%CB%F7+
ccl下载地:
没听过cli,什么东西啊我只用过ccl
首先来简单了解一下杀毒软件查杀病毒的原理,当前杀毒软件对病毒的查杀主要有特征代码法和行为监测法。其中前一个比较方法古老,又分为文件查杀和内存查杀,杀毒软件公司拿到病毒的样本以后,定义一段病毒特征码到病毒库中,然后与扫描的文件比对,如果一致则认为是病毒,内存查杀则是载入内存后再比对,第二个比较新,它利用的原理是某些特定的病毒会有某些特定的行为,来监测病毒。
免杀常用的工具:
Ollydbg 调试器简称OD,动态追踪工具 peid 查壳工具 PEditor PE文件头编辑工具
CCL,伯乐,MYCCL 特征码定位器 oc 地址转换器 reloc 修改EP段地址工具 zeroadd 加区工具 Uedit32 十六进制编辑器
免杀方法
一.文件免杀
1.加花
2.修改文件特征码
3.加壳
4.修改加壳后的文件
二.内存免杀
修改特征码
三.行为免杀
加花
加花是文件免杀的常用手段,加花原理就是通过添加花指令(一些垃圾指令,类似加1减1之类废话)让杀毒软件检测不到特征码。加花可以分为加区加花和去头加花。一般加花工具使用加区加花,当然也是可以手工加的,就是先用zeroadd添加一个区段,然后在新加区段里写入花指令,然后跳转到原入口;去头加花,是先NOP(汇编里的空操作)掉程序的入口几行,然后找到下方0000区,写入NOP掉的代码和一些花指令,再通过JMP(汇编里的无条件跳转)跳到原入口。
举个例子说明一下去头加花:
图1
这是PcShare服务端入口处的一段代码,原入口地址是00403D7D,因为是演示我就用两句最简单的垃圾代码,花指令可以自己去找或者自己写
push eax;eax寄存器压入堆栈
pop eax;eax寄存器弹出堆栈
图2
先将入口两句用NOP填充,然后找到一段0000区记下新入口地址0040443C
图3
写入刚刚NOP掉的入口两句和花指令还有跳转到原入口的指令
图4
把修改好的代码保存,用PEditor把入口地址修改为新入口0040443C就完成了,代码执行时从新入口开始,先执行花指令然后跳转到原入口执行真正程序,很简单吧?其实花指令可以加在头后同样也可以加在头后,也就是可以先执行花指令,然后再是入口,免杀效果是不一样的!大家可以试一下。加区加花很相似,主要是怕程序的0000区不足,先用工具新加一个区,在新区里写入花指令,其他的和去头加花一样,就不演示了。
细的去这个地方去看图
加花以后一些杀毒软件就认不出了,但有些比较强悍的杀毒,比如司机大叔(卡巴斯基)可能还是能查出来,这时就要定位特征码然后修改了,要修改首先必须知道特征码在哪里,所以需要先定位特征码,这是个难点,特别是复合特征码的定位。
特征码定位
特征码定位主要有两种方法:第一 直接替换法;第二 二叉数法;
直接替换法是最早开始出现的一种特征码定位方法,按一定的字节数逐个替换原代码并保存,比如木马总共100字节,可以先把0-10个字节用0替换,保存,然后用杀毒软件扫描,不被查杀说明特征码已经被覆盖掉了,如果还被查杀则替换10-20字节,再保存,扫描……直到找出特征码。替换法的优点是容易理解,速度快(对文件特征码而言),特征码定位工具伯乐以及CCL的手动方式就是利用的替换法原理,文件特征码定位经常使用的就是这种方法。但是对于内存特征码的定位这种方法就不太实用了,每次替换以后都要载入内存再扫描,如果木马较大,替换生成的文件会非常多,每个都要载入内存花费太多时间,除此之外它还有一个非常大的局限性,就是只能确定只有一处特征码的情况(某种特定情况下的多特征码也是适用的,下面的第3种情况将有讲述),杀毒软件还有别的定位特征码的机制,比如有的杀毒的定义了a,b两处特征码(三处或者更多原理是一样的,为了讲解方便,以下均以两处为例),只要a,b有一个存在便报毒,只有加大替换范围直到两处同时被替换才不报毒,如果两处距离比较远,定义出的范围将非常粗糙,很明显直接替换法将不再合适,这时第二种方法就有用武之地了。
二叉数法使用的原理是一半一半定位,CCL的自动方式就是运用的这个原理。将待检测段一分为二,分别替换并生成两个文件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在复合特征码定位方面应该改进的地方吧。
复合特征码虽好,大家也不用害怕,认为所有杀毒都来个复合特征码我们就要累死了,定义复合特征码需要单个特征码几倍的病毒库,不方便用户的升级,所以除了特别流行的病毒,定义复合特征码的也不是很多。
定位特征码有些经验可以告诉大家,文件特征码的定位一般用直接替换法,可以借用CCL的手动定位;内存特征码定位,一般用二叉数法,可以用CCL自动定位。对于EXE文件如果文件较小,可以两种方法结合,先用直接替换法生成,可以用伯乐这个工具(为什么不用CCL呢,因为伯乐生成的是EXE文件可以看出图标的模样),找到还能正常运行的,那些图标都变了的说明PE头已经损坏了,就不要试了,然后载入内存,再扫描内存,如果既能正常运行又不被杀,恭喜你!成功了!定位出了大体范围,再用CCL自动定位,很快就可以完成。如果文件较大,用伯乐生成的文件太多,也不方便,还是用CCL定位,对于DLL文件也只能老老实实用CCL定位了。
特征码修改
特征码修改可能需要一点汇编的知识,光盘里有常用的汇编语法介绍,修改主要有直接修改法和跳转修改法。
直接修改法利用的是等效指令替换,比如
add eax,0c等效于sub eax,-0c
或者指令顺序的改变不影响执行的效果,比如
add eax,0c;eax寄存器加上0c再赋给eax
add ebx,05;ebx寄存器加上05再赋给ebx
等效于
add ebx,05;ebx寄存器加上05再赋给ebx
add eax,0c;eax寄存器加上0c再赋给eax
还有一种是如果特征码是ASCII码,可以直接修改大小写,小写字母换成大写,大写的换成小写。
图5
SOFTWARE\Borland可以改成sofTwAre\BOrlaND
大家可以学习一下最基础的汇编语法,并不难,对特征码修改你将会有更深的理解。
跳转修改法比较简单,主要原理就是把特征码的那段NOP掉,然后把NOP掉的语句写入空白的0000区,再通过JMP跳转连接起来,让杀毒找不到特征码,从而达到免杀的目的。
举个例子
为什么我用的加花加壳工具要不是加不了,要么加了后运行提示“不是有效的win32程序”郁闷
因为您在反汇编的过程中打乱了一些代码 导致生成EXE是错误的
个人建议您要是刚入门的话 按照教程一步步走 等自己明白反汇编了 再自己创新
希望对您有所帮助
有没有过360的鸽子木马加花工具,好用的 绝对能过?
百度 怒剑狂花花指令这个 然后 加个壳 或者捆绑器 捆绑 也能过.捆绑 加花 基本都无法过主动 只过表面 更本没用.现在 有一个 最新 免杀的方法 百度 夜鹰 找到黑客教程 直接 替换一些文件 有几个教程都是这种直接主动 都过