花指令

花指令 花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令: jmp, call, ret的一些堆栈技巧,位置运算,等等。花指令生成器 编辑 一、写花指令生成器必备知识 花指令原理 花指令是程序中的无用代码,程序对它没影响,少了它也能正常运行。加花指令后,杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。 如何写花指令 下面我们先看看一段花指令,分析理解它的原理: PUSH EBP MOV EBP,ESP push edx pop edx inc ecx dec ecx add esp,21 add esp,-21 add esp,10 sub esp,10 JMP 附近空地址随便乱跳 JMP 原入口点 花指令一般有三部分,开头就是PUSH EBP和MOV EBP,ESP这两句在大部分程序开头可以经常看到。PUSH EBP是把EBP压入堆栈,MOV EBP,ESP是把ESP的值赋给EBP,不懂没关系,只要知道PUSH EBP和MOV EBP,ESP这两句经常出现在文件开头就可以了,随便用OllyDbg打开一个不加壳的文件载入后经常停在PUSH EBP MOV EBP,ESP。 接下来就是花指令啦,push edx是把通用寄存器EDX压入堆栈,pop edx是把通用寄存器EDX弹出堆栈,这两句和起来就相当于什么也没做。接下来的inc ecx,ecx用来保存计数值,也是寄存器,INC是加1;下面的dec ecx中的dec是减1,加1减1相抵消,又是什么也没做。add esp,21这是寄存器esp加21,add是加上,下面一句add esp,-21是寄存器esp加-21,小学知识,+21+ (-21) =0,还是什么也没做。再下来add esp,10寄存器esp加21,sub esp,10寄存器esp减10,sub是减去。一个+10,一个-10相互抵消了。 最后是跳转语句,我用两句JMP,第一句在花指令附近随便跳到个空地址,第二个JMP是从空地址跳回文件的原入口点。 如何写入花指令 我们来看看加花指令的一般步骤: 准备好要加的花指令; 准备未加壳的黑客软件; 用OllyDbg打开这个黑客软件,记下入口点的内存地址; 找到零地址,一句一句写入花指令,再用JMP跳回程序入口点; (如果找不到空白地址,我们可以用zeroadd加区段,英文软件,我汉化好的,操作简单就不演示了。) 保存后用Peditor修改文件入口点为开始写花指令的地址。这样运行程序就先运行花指令再跳回程序的原始开头执行程序了; 检测程序是否正常运行和免杀效果。 http://baike.baidu.com/view/592213.htm http://www.blogjava.net/Todd/archive/2010/05/20/321429.html

2014-04-11 · 1 min · 68 words · -