当前位置:文档之家› 花指令

花指令



花指令的概念与认识花指令



1、什么是花指令
什 么是花指令?实际上,把它按照“乱指令”来理解可能更贴切一些,我们知道,汇编语 言其实就是机器指令的符号化,从某种程度上看,它只是更容易理解一点的机器指令而已。每一条汇编语句,在汇编时,都会根据cpu特定的指令符号表将汇编指 令翻译成二进制代码。而日常应用中,我们通过VC的IDE或其它如OD等反汇编、反编译软件也可以将一个二进制程序反汇编成汇编代码。机器的一般格式为: 指令+数据。而反汇编的大致过程是:首先会确定指令开始的首地址,然后根据这个指令字判断是哪个汇编语句,然后再将后面的数据反汇编出来。由此,我们可以 看到,在这一步的反汇编过程中存在漏洞:如果有人故意将错误的机器指令放在了错误的位置,那反汇编时,就有可能连同后面的数据一起错误地反汇编出来,这 样,我们看到的就可能是一个错误的反汇编代码。这就是“花指令”,简而言之,花指令是利用了反汇编时单纯根据机器指令字来决定反汇编结果的漏洞。

2、花指令与免杀的关系
加花就是,在程序汇编中,加了一些无用的废话,用来扰乱杀软对特征码的扫描对比,来达到免杀的目的。
是一种逃避方式,主要用于表面免杀。
加花指令的确没有改变特征码的位置,但是他改变了程序执行顺序,有的也能改变文件结构。使杀毒软件扫描的时候跳到花指令处,即判断没有病毒。通常情况下,在文件免杀的时候,加花指令是最简单、有效的方法,而且一般能通杀很多杀毒软件,所以一般文件免杀通用此法,前提是你的花指令不是常用的,最好能自己做出你个人的花指令,才会很有效。

3.花指令执行顺序
花指令一般添加到程序的头部。
执行顺序:花指令入口-->执行花指令-->程序原入口-->执行原程序
花指令的好坏直接决定程序是否可以躲避杀毒软件的查杀,花指令和壳的本质差不多,都是为了保护程序而做,所以我们做免杀的时候,可以多结合壳和花指令各自的优点对程序进行处理,达到更好的免杀效果。
大概步骤总结:
第一步:从编写手册中成对的提取几对
第二步:打乱它们之间的顺序,也可不打乱
第三步:中间插入几个nop或jmp,也可不插入
第四步:最后添加跳转到入口地址指令
第五步:把编写好的花指令添加到程序中后,测试是否可以正常运行,然后再用杀毒软件查杀


3、花指令的样本
PUSH EBP
MOV EBP,ESP
DEC EBP
INC EBP
ADD ECX,1
SUB ECX,-1
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
POP EAX
MOV DWORD PTR FS:[0],E

AX
MOV CL,1
PUSH EAX
SUB AL,90
POP EAX
ADD ESP,-0C
ADD ESP,0C
PUSH EAX
JNO 原始入口
________________
push ebp
mov ebp ,esp //常见的入口代码
add esp ,68 //以下的指令都是对称的(成对的)
sub esp ,68
inc ecx
dec ecx
push edi
pop edi
push eax
pop eax
push edi
pop edi
inc ecx
dec ecx
nop
jz 跳回入口点 //跳到程序的入口,执行原程序
jnz 跳回入口点
____________
push ebp
mov ebp, esp
push eax
push eax
nop
pop eax
pop aex
sub eax, 1
inc eax, 1
push 入口地址
retn

相关主题
文本预览
相关文档 最新文档