免杀常用方法

等价替换、通用跳转、指令顺序调换、大小写替换、特征码十六进制加减1、NOP、填0、以及特殊常见指令的修改方法



等价替换:

修改方法:JMP = JE JNE je改成jle ja/jle

适用范围:把特征码所对应的汇编指令命令中替换成类拟的指令





通用跳转法:

修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.(可以换成push xxxx retn)

适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.





指令顺序调换法:

修改方法:把具有特征码的代码顺序互换一下.

适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行





修改字符串大小写法:

修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.

适用范围:特征码所对应的内容必需是字符串,否则不能成功.(注意:函数不能用这种方法)



直接修改特征码的十六进制法(特征码十六进制加减1、nop)

修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制、或者填充90(nop)或者填0

适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用.





test eax, eax

很多程序都是用test eax, eax来做检测返回值是否为0,那么遇到test eax, eax 那么可以直接改or eax, eax



call

例子:call 11111111

改成 call 22222222 (22222222为0区域)

2222处jmp 11111111



00404075 . 8BEC MOV EBP,ESP

00404077 . 83C4 F0 SUB ESP,10


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

1.NOP法 (常常检测自己是否定位正确)

2.加1法 (很牛B,很简单,但是不一定实用于每个特征码)

3.大小写替换(很好,很强大,修改后100%可以用! 注意:PE头 函数 不能修改)

4.add ecx,2 可以改为 sub ecx,-2
(加ecx内存器+2 减ecx内存器-2 - -2得=2)
(特征码:0046B897)
0046B897: 83C4 F0 ADD ESP,-10 sub ESP,10


5.push 变 pop 
(特征码:0046B96D)

PUSH EBP—POP EBP
PUSH EDX—POP EDX
POP EDX—PUSH EDX

6.je 变 jnz
(特征码:004230F6)
LOOPD SHORT *.*—JNZ SHORT *

7.add 变 sub

8.call跳转
call A (原地址)
修改 call B (0区域)
B的位置写 call A (原地址)
00423210: E8 3B1DFFFF CALL 00414F50 (原地址)

0049575C: 0000 ADD [EAX],AL (0区域)



















方法一:直接修改特征码的十六进制法
1.修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制.

2.适

用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能
否正常使用.

方法二:修改字符串大小写法
1.修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.
2.适用范围:特征码所对应的内容必需是字符串,否则不能成功.

方法三:等价替换法
1.修改方法:把特征码所对应的汇编指令命令中替换成功能类拟的指令.
2.适用范围:特征码中必需有可以替换的汇编指令.比如JN,JNE 换成JMP等.
如果和我一样对汇编不懂的可以去查查8080汇编手册.

方法四:指令顺序调换法
1.修改方法:把具有特征码的代码顺序互换一下.
2.适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行

方法五:通用跳转法
1.修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.
2.适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.

七.木马免杀的综合修改方法

文件免杀方法:
1.加冷门壳
2.加花指令
3.改程序入口点
4.改木马文件特征码的5种常用方法
5.还有其它的几种免杀修改技巧

内存免杀方法:

修改内存特征码:
方法1>直接修改特征码的十六进制法
方法2>修改字符串大小写法
方法3>等价替换法
方法4>指令顺序调换法
方法5>通用跳转法
木马的免杀[学用CLL定位文件和内存特怔码]

1.首先我们来看下什么叫文件特征码.
一般我们可以这样认为,一个木马程序在不运行的情况下,用杀毒软件查杀,若报警为病毒,说明存在该查毒软件的文件特征码的。
2.特征码的二种定位方法.
手动定位和自动定位
3.文件特征码的定位技巧.
通常用手动确定大范围,用自动精确定位小范围.
下面分别用瑞星和卡巴为例,实例演示并结合手动定位和自动定位二种方法来准确定位文件特征码。要定位的对像以下载者为例。
用卡巴来定位文件特征码
⑴.手动定位:
1 打开CLL
2 选择设置中的 总体参数 ,,,,,选中文件特征码手动定位,,,,以及路径

3选中设置中的 手动参数,,,,,选择替换方式 选中,,,总共生成规定个数的文件,,,生成个数为1000

4选择文件中的 特征码检测,,文件特征码检测,,,打开程序(要定位特证码的程序)
5在弹出的PE窗口中 直接点确定 ,之后弹出的窗口在点确定
6然后等CLL生成完毕之后用杀毒软件进行查杀
7在CLL中选 操作,结果定位,选中刚刚用来存放检测结果的文件夹
8在CLL中选
文件免杀之加花指令法

一.花指令相关知识:
其实是一段垃圾代码,和一些乱跳转,但并不影响程序的正常运行。加了花指令后,使一些杀毒软件无法正确识

别木马程序,从而达到免杀的效果。

二.加花指令使木马免杀制作过程详解:
第一步:配置一个不加壳的木马程序。
第二步:用OD载入这个木马程序,同时记下入口点的内存地址。
第三步:向下拉滚动条,找到零区域(也就是可以插入代码的都是0的空白地方)。并记下零区域的起始内存地址。
第四步:从这个零区域的起始地址开始一句一句的写入我们准备好的花指令代码。
第五步:花指令写完后,在花指令的结束位置加一句:JMP 刚才OD载入时的入口点内存地址。
第六步:保存修改结果后,最后用PEditor这款工具打开这个改过后的木马程序。在入口点处把原来的入口地址改成刚才记下的零区域的起始内存地址,并按应用更改。使更改生效。

三.加花指令免杀技术总节:
1.优点:通用性非常不错,一般一个木马程序加入花指令后,就可以躲大部分的杀毒软件,不像改特征码,只能躲过某一种杀毒软件。
2.缺点:这种方法还是不能过具有内存查杀的杀毒软件,比如瑞星内存查杀等。
3.以后将加花指令与改入口点,加壳,改特征码这几种方法结合起来混合使用效果将非常不错。
四.加花指令免杀要点:
由于黑客网站公布的花指令过不了一段时间就会被杀软辨认出来,所以需要你自己去搜集一些不常用的花指令,另外目前还有几款软件可以自动帮你加花,方便一些不熟悉的朋友,例如花指令添加器等。

四 改入口点免杀法:
1.改入口点免杀原理:杀毒软件一般都检测病毒还原之后的代码,而且一般都把代码段开始的前40个字节作为特征值.入口点改变了,说明也就破坏了特征码,这样就达到免杀的效果.
2.改入口点免杀方法一:入口地址加1法.
操作步骤:
第一步:配置一个无壳的木马服务端.
第二步:用PEditor打开木马程序服务端.在入口点处的地址加1.然后点应用更改就可以了.
评论:该方法对不同木马程序,有不同的效果,其它杀毒软件一般都可以躲过,但有些程序改过后还是被卡巴查杀.同时也不能过内存查杀,但以后结合加花指令,加壳等等方法,效果将非常不错.


3.改入口点免杀方法二:变换入口地址法.
操作步骤:
第一步:用OD载入无壳木马程序服务端.
第二步:把入口点的开始二句代码(大都为push ebp mov ebp,esp).移到零区域也是就空白区域地方.并记下零区域的内存地址.同时在后面加一句跳转命令:JMP 到第三条指令的地址.
第三步:然后修正并保存,最后用PEditor打开该程序.把入口点改成刚才在零区域记下的内存地址.
评论:该方法效果比方法一要好.经测试,用方法一改过后被卡巴查出来,用方法二就查不出来. 以后可以结合加花指令,加壳,改特征码,打

造金钢不死之身!


采用以上的方法可以躲过不少杀毒软件的追杀,并且方便快速,又很简单,所以是免杀里非常主要的手段,但是一定要检查文件是不是能够正常运行。
免杀新技术[虚拟机加密免杀]和[壳中改籽]

一 虚拟机加密免杀
最新免杀技术——虚拟机加密代码应用并非传统的修改特征码,也不是修改入口点+花指令,更不是
加壳压缩!是最新的一种免杀技术!借于这种技术你可以千变万化,是免杀对新手来说更为简单!
大家对虚拟机vmprotect是否有所了解,这个是最新的加密工具!可以加密PE文件中任何一句或一段代码
自然可以给我们用来免杀了!
免杀工具:vmprotect1.07或1.06PEID UPX
免杀步骤:原理说明:加密区段代码使杀毒软件无法识别!你可以找特征码,找到后加密特征码的代码!
用PEID查看入口点:假如这里的入口点是0007DB74基址是 00400000
3.用虚拟机vmprotect打开要免杀的文件,添加地址0047DB74=00400000+0007DB74基址+入口点
4.选代码区域->转存->F9保存
5.测试运行->可以成功运行
6.用UPX压缩一下,缩小体积,OK 免杀成功
总结:虚拟机加密代码是比较新的免杀技术,可以和其他免杀技术有机的集合在一起,让你的木马变成金刚不坏.大家要多多掌握。
二 壳中改籽技术免杀
这种免杀很少有人用,所以免杀效果非常好,各大黑客网站也很少见到介绍,这里我把别人做黑洞免杀的文章发到这里,供大家研究.估计是浩天写的文章
先讲一下为什么这种技术叫“壳中改籽”。配置一个黑洞的服务端,然后用PEiD.exe来查看它是用什么加的壳,查到是UPX加的变态壳,程序的区段都给隐藏了,那么先得给黑洞服务端脱壳。用 upxfix.exe打开它,然后在Decompress method里面选择5,点击fix,这样就修复了。再用PEiD.exe查一下,看现在可以看到区段了吧。
为什么我一再提到这个区段呢?其实它就是文章的重点,也就是壳里面的籽。继续脱壳,用UPXShell打开修复好的黑洞服务端,点击解压缩,完成后我们可以看到程序由原来的201kb变成了506KB ,大了一倍多。
有人可能要问为什么一定要给它脱壳呢?直接修改不可以吗?其实主要是因为黑洞的服务端里还有一个用做键盘记录的dll文件,它也要做免杀处理。用 Resscope1.92打开黑洞的服务端,这个可是绝好的exe资源编辑器啊,先选择dllfile里面的getkey,然后点击文件→导出资源,这样dll文件就导出来了。它也是用upx加的变态壳,因为区段被加密了,所以我们也要给它脱壳,再加壳。脱壳的过程和先前脱黑洞服务端一样先用upxfix.exe打开它,但是这里注意在Decompress method里面,不要选择5,而是选择2修复,不然的

话就脱不了壳了。
接着用UPXShell解压缩,现在dll文件的大小由原来的11kb变成了18.5kb,然后再用UPXShell重新给它加上壳。
三、修改upx壳里面的籽
把UPX加过壳的dll文件,用PEiD.exe打开查看,这里有几个数据需要我们记录,等下和修改后的文件做比较用。
先分别把程序入口点:000C220、文件偏移量:00002620,记录下来,然后点击查看EP区段,在区段查看上面再点右键选择cave查找器,把upx壳区段upx1的RVA:0000C3B5、 偏移:000027B5等参数也记录下来。

关键的时刻到了,reloc.exe闪亮登场。因为reloc 是一款命令下的工具,所以为了操作方便,我建议大家写一个bat文件和reloc放在同一目录。我们开始记录的数据现在派上用场了,编辑bat文件格式如下:
reloc 待修改程序 $程序入口 $文件偏移量 $壳的区段入口 $区段偏移 参数
那么对应我们的黑洞键盘记录dll文件所记录的数据,这个bat就应该这样写:
reloc 键盘记录.dll $C220$2620$C3B5$27B5 5
数据前面的零不要写到bat里面,另外最后面的这个参数大家注意,其实它是设置修改时的偏移量的,一般dll文件选择5,exe文件选择5-9之间的数,一般选择6就好了。
设置完了,我们运行这个bat文件,开始修改。完毕之后我分别用国内和国外最强的杀毒软件江民、诺盾和卡巴斯基对键盘记录.dll进行扫描,它们均未发现病毒,我们的木马成功躲了过去。用PEiD.exe重新打开,可以发现PEiD已经无法分别键盘记录.dll是什么壳了,把原来记录的几个数据和现在对比一下发现程序入口和文件偏移量没有,而壳区段入口和区段偏移却改变。
飘舞的风在上一期的文章里面说道:“peidv0.92是通过每个程序的开头几十个字节来比较是那种壳。”,看来不仅仅如此,peidv0.92还把壳的区段入口开头的几十个字节也作为了用来判断壳的类型的特征代码,杀毒软件也是如此,这样简单修改一下我们的木马就免杀了。
着把这个已经修改好的dll文件,导回到黑洞的服务端,方法和导出dll是一样的,我就不再讲述了,然后把它用UPXShell再次加壳,加壳后的大小为200kb。
现在可以开始我们的第二次免杀之旅了,同样用PEiD.exe把程序入口、文件偏移量、壳的区段入口、区段偏移,等数据记录下来,写入bat文件。
我的bat是这样写的:
reloc 1.exe $88620$30A20$887A3$30BA3 6
我前面已经讲过了,修改exe文件的时候,参数选择5-9之间的数,一般选择6就好了。现在运行bat文件,黑洞服务端的免杀就全部完成了。用PEiD.exe查看,显示的是“Nothing found”看来PEiD已经不认识它了,再用江民、诺盾和卡巴斯基查杀,均显示无病毒,呵呵,欺骗成功。
四、结语
经过这么简单的修改以

后效果是非常好的,相信以后这样的免杀技术将会成为主流技术,因为它简单实用。
分析它实现免杀的原理,不难看出换一个角度思考问题的重要性,从壳的修改转到壳中籽的修改,不能不说这是一种创新,
它使木马的免杀之路变宽了。最后谢谢 “朋友的家”提供一款这样优秀的工具。如果大家能够把这种技术和我前面提到的另外三种结合起来使用,相信它将是无懈可击的
免杀新技术之OD一半定位法

不知道是那位牛人想出来把这方法用到木马免杀上,这个方法让很多不会用偏移定位特怔码的朋友也能够很容易掌握到特怔码的位置,实在是很高明又很简单的免杀好方法.这里我就根据他的方法详细介绍OD一半定位法
所谓OD一半定位法很简单,就是用OD载入需要做免杀处理的文件,用NOP填充一半的代码然后保存,接着用杀毒软件查毒,如果有毒就在把另外一半用NOP填充,如果没报毒就证明特怔码就在刚刚填充的那一半,然后又对那一半进行1/2的NOP填充,这样不断缩小范围,很容易就找到需要修改的代码部分。如果是做内存免杀就把NOP填充好的文件用OD打开进行内存杀毒。怎么样?是不是很容易掌握的方法?
不过需要注意的是新手用这个方法最好每做一步都把NOP填充的开头和结局部分的地址用纪事本保存,免得一旦忘记又从头来.
如果特怔码不止一处,你就要大致定位到有特怔码这一大段,然后把这一段的一半用NOP填充并且保存,接着打开保存的文件对另外一半继续刚刚开始的步骤,这样很快就能够定位出几处特证码所在的位置.
还是那句话,熟练就好,另外需要注意填充后查出的病毒名字有没有改变,如果改变就证明你填充的那段存在特怔码,这样可以省掉不少时间。
文件免杀之文件特征码修改五大法宝

方法一:修改字符串大小写法

1.修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.
2.适用范围:特征码所对应的内容必需是字符串,否则不能成功.

方法二:直接修改特征码的十六进制法
1.修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制.
2.适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用.

方法三:指令顺序调换法
1.修改方法:把具有特征码的代码顺序互换一下.
2.适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行。

方法四:通用跳转法
1.修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.
2.适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.

方法五:等价替换法
1.修改方法:把

特征码所对应的汇编指令命令中替换成功能类似的指令.
2.适用范围:特征码中必需有可以替换的汇编指令.替换后指令功能要不变比如JN,JNE 换成JMP,这里要对汇编要比较熟悉,读懂指令后可以替换功能相同的指令。也可以去查8080汇编手册[计算机专栏里有]

实战特怔码免杀
第一步:首先用内存定位法来准确定位瑞星内存特征码的具体位置
第一阶段:自动参数中,生成文件间隔秒数设为4,最小替换字节数设为100字节。(主要用于大体定位内存特征码)
第二阶段:自动参数中,生成文件间隔秒数设为4.最小替换字节数设为4字节。(主要用于准确定位内存特征码)
第二步:修改特征码
用OD打开文件,找到特怔码所在位置,并且判断适合用那种方法修改,如果对方法不太熟悉,并且特怔码不止一处,那就需要你改一处就保存并且在虚拟机里试验能否正常运行[虚拟机可是做免杀的必备工具,强烈建议你安装,因为你不可能就在自己的机器上运行木马吧?在说也不可能在你机器上同时安装N种杀软,那你机器不慢死,更重要还可以用来试验别人提供的软件有没有木马]
木马免杀技术之独门绝技


绝技一:快速搞定瑞星文件查杀
操作步骤:
第一步:用OD载入,来到程序的入口点。
第二步:把入口点的第一句PUSH EBP 改成POP EBP 然后保存就可以躲过瑞星的表面查杀。

绝技二:快速定位与修改瑞星内存特征码
原理:因为目前的内存查杀杀毒软件,只有瑞星才能威胁到我们的木马。也就是说只要搞定瑞星的内存查杀,那我们的木马在内存就畅通无阻了. 但由于技术原因,目前瑞星的内存特征码在90%以上把字符串作为病毒特征码,
这样对我们的定位和修改带来了方便.

操作步骤:
第一步:首先用特征码定位器大致定位出瑞星内存特征码位置.
第二步:然后用UE打开,找到这个大致位置,看看,哪些方面对应的是字符串,用0替换后再用内存查杀进行查杀.直到找到内存特征码后,只要把字符串的大小写互换就能达到内存免杀效果.

绝技三:如何快速躲过诺顿的查杀
诺顿的查杀特点:大家有时候会发现,通过改特征码,加花指令,改内存特征码,等等,卡巴,江民,金山,瑞星都过了,但无论如何都过不了诺顿,这时候是不是感到很纳闷.其实诺顿特征码的定义和其它杀毒软件不一样,其它杀毒软件的特征码都在代码段而只有它把特征码定义在PE头文件里面.而在头文件里面,一般都用字符串作为病
毒特征码,知道了原理,就有下面的二种方法来应付.

方法一:只要把头文件的字符串的大小字互换一下就可以搞定了.
方法二:有二款压缩软件WinUpack和北斗星,经过他们的压缩,会把我

们的木马程序的头文件改的面目全非.所以把我们的木马做好其它的杀毒软件的免杀后,再用这二款压缩软件的压缩就可以躲过诺顿的查杀.

绝技四:一个不太通用的免杀方法
免杀方法一:把入口点第三句开始的几行(20字节内)汇编代码移到零区域去执行,也达到一定的免杀效果.

绝技五:用VC++加了花指令后入口点下移法
操作过程:加花指令后,可以把入口点下移好一位,这样可以进一步达到免杀效果.

一.木马免杀综合方案

修改内存特征码--->1>入口点加1免杀法 1>加压缩壳1>--->再加壳或多重加壳
2>变化入口地址免杀法 2>加生僻壳--->2>加壳的伪装.
3>加花指令法免杀法 3>加压缩壳3>--->打乱壳的头文件
4>修改文件特征码免杀法
以上免杀方法可以自由组合成多种不同的免杀方案。

二.常用免杀方案
1.实例完全免杀方案一:
内存特征码修改+加UPX壳+秘密行动打乱壳的头文件。
所需工具:UPX加壳工具,秘密行动
2.完全免杀方案二:
内存特征码修改+加花指令+加压缩壳
3.完全免杀方案三:
内存特征码修改+加压缩壳+加壳的伪装或多重加壳
4.完全免杀方案四:
内存特征码修改+去头变换入口点地址+压缩壳
5.完全免杀方案五:
内存特征码修改+修改各种杀毒软件特征码+压缩壳
6.完全变态免杀方案六:
内存特征码修改+加花指令+去头变换入口点+加UPX壳+用秘密行动打乱壳的头
文件

三.解决加花指令后运行出错问题

1.分析其原因:我们加花指令时,一般都找代码段最后面的空白代码地方也就是所谓的零区域,然后把我们准备好的花指令填进去,然后一个跳转跳到入口点。但是我们木马的体积比较大,从入口点到最后面零区域的间隔比较远,所以从低部跳到头部由于间隔较远就非常容易出错。

3.新研究的免杀方法完美的解决了该问题:我把它取名为:中间过渡跳转法

实例演示:中间过渡跳转法来修改灰鸽子V1.22版或VIP2.0版。

中间过渡中转法实现原理:首先我们在代码段的中间位置,备份部分代码,然后把我们要添加的花指令写进去,写完后,再跳到零区域,在这个零区域填入刚才我们备份好的代码.填完后又要跳回填入花指令的生面.总之一句话:把花指令填在代码中间,被花指令覆盖的代码移到零区域去执行,然后又要跳回来.最后把入口点改成花指令的首地址.这样就算完事了.

4.该新的免杀技术优点:以前的花指令只能填到零区域,也就是说入口点一般都比较后面,所以有时会被卡巴查杀,但有了这种新方法后,程序入口点就变的非常灵活,可以定位在代码段的任何位置,每定位一个新的入口点就是一种新的免杀方案.而且这种方法

对付卡巴也很有效.把入口点放到代码段的中间,是杀毒软件万万想不到的,所以免杀效果是最好的.同时他解决了由于跳转太远使程序无法运行的缺点,所以这种方法是相当完美的免杀方法.


相关文档
最新文档