转:
NOD32杀毒是我遇到的最难应付的免杀了。
无论我怎么去特征码定位等等都无效,
相比之下,这样处理后,几乎卡巴,瑞星,江民,金山都已经认不出来了。
但是还是过不了NOD32
一次意外的发现,添加如下代码
Xor Ecx,Ecx
1: Dec Ecx
2: Loop 2 '1和2分别代表的是地址
Loop 1
再给NOD32查杀,只见CPU100%,几秒后,不杀了,当做没发现。
是不是成功了呢?没有,当程序这样一改,基本上就废了。
但是能不能用一种条件让这段代码执行呢?如果执行了段代码,那样NOD32就会不杀。再看看NOD32的进程占CPU那么大,可能就是虚拟执行占用大量的CPU,
怎么判断是否在虚拟状态下执行呢?能不能够通过时间来判断呢?
方法如下:
首先通过GetTickCount得到一个时间值A并把它保存起来,然后Sleep 1秒,再次使用GetTickCount得到1秒后的时间值B,最后判断如果B减去1秒小于A,则在虚拟执行环境中……知道怎么做了吧?否则正常执行。
经过多次测试,如果虚拟执行中Sleep100秒跟没有Sleep一样,明显,Sleep 1秒可以忽略不计,也就是说A的值几乎跟B的值是相等的,因为GetTickCount精度不太高,所以不能判断相等做为依据,只能判断大于或小于。但是在实际运行中,Sleep 1秒后B,会比A大很多,即B-1<=A,
简单地说,通过比较这两个时间的不同来判断在哪种环境下执行。看明白了没?
阅读(2824) | 评论(2) | 转发(0) |