原标题:花指令的应用
对免杀的影响是非常大的,有效地利用花指令可以使免杀工作事半功倍,甚至单凭花指令就可以达到免杀的效果。
一、花指令在免杀领域的应用
1、花指令的应用技巧
在使用之前,首先我们应该明白什么时候比较适合使用,同时还要清楚什么时候不适合。总的来说,应该在无壳的木马中应用,如果木马已经被加壳,那么我们必须要先脱壳然后再添加。不管是加壳还是加都可以看作是一种加密行为,因此一般都是先加然后再加壳。
有一点需要说明的是,添加也会增加木马被启发式扫描器发现的概率,因为常见的可能本身就包含着特征码,所以究竟什么时候加,加多少是件仁者见仁、智者见智的事情。
下面将带大家进行一次典型的花指令添加操作。首先打开Ollydbg并载入我们要加花的程序,然后找到一段空白区域写入以下花指令:
首先选中空白区域并按空格键,在调出的反汇编窗口中依次写入上面的指令,然后写入jmp指令跳回到原程序入口点并将程序Dump(转储)保存,最后修改OEP。
其实除了手工添加花指令外,还有一些工具也可以实现自动加花。
2、花指令的修改技巧
既然能制作出来,那么必然也可以修改它,但是的修改是否能达到我们预期的目的,是否能修改成功呢?这就需要有一定的汇编语言基础了。
花指令首先要保证不破坏堆栈平衡,或者它只能在程序可以接受的范围内进行有目的的破坏,这样才能保证程序在加花后仍可正常运行。说到这里,或许会您对“堆栈”这个名词发悚,不用担心,带着问题看下去就会明白了。
所谓的堆栈平衡,目前可以简单地理解为不影响程序的运行结果,例如我们先执行一条push eax,也就是将eax的内容压入栈,然后再执行一条pop eax,也就是将栈顶的内容取出并传递给eax,这样一存一取,对于堆栈来说没有任何影响,也就是说这时的堆栈是平衡的。
保证堆栈平衡是的制作原则,如果要在现成的上进行修改,可以使用特征码的等值替换法来修改原有的语句,例如将add eax,-3修改为sub eax,3等,或者是添加一些自己的语句,例如添加add eax,3与sub eax,3。由此不难看出,的修改其实是很简单的。
3、空白区域寻找与加空白区段
不管是通过反汇编为