利用花指令免杀
利用花指令免杀
一.花指令概念:
花指令是一堆汇编指令组成,对于程序来说,是一堆废话,加不加花指令都
不影响程序的正常运行.编写的花指令要终始保持堆栈的平衡.
二.写花指令的原则:
写花指令的基本原则就是要保持堆栈的平衡.
写花指令细细品味下面一段比喻:
我们把一段花指令比喻成一道数学运算题,把汇编指令(push pop等)比喻成加减
乘除,把寄存器或数据(eax,ebx,1等)比喻成
数字(1,2,3等),那么要保持花指令堆栈的平衡,等于保持这道数学题的结果是0 .
三.解释一些指令含意
push ebp ----把基址指针寄存器压入堆栈
pop ebp ----把基址指针寄存器弹出堆栈
push eax ----把数据寄存器压入堆栈
pop eax ----把数据寄存器弹出堆栈
nop -----不执行
add esp,1-----指针寄存器加1
sub esp,1-----指针寄存器减1
inc ecx -----计数器加1
dec ecx -----计数器减1
sub esp,1 ----指针寄存器加1
sub esp,-1----指针寄存器加-1
jmp 入口地址----跳到程序入口地址
push 入口地址---把入口地址压入堆栈
retn ------ 反回到入口地址,效果与jmp 入口地址一样.
mov eax,入口地址 ------把入口地址转送到数据寄存器中.
jmp eax ----- 跳到程序入口地址
jb 入口地址
jnb 入口地址 ------效果和jmp 入口地址一样,直接跳到程序入口地址.
四.免杀花指令编写手册:
注:以后编写花指令,都可以参考本手册,灵活组合,快速写出自己的花指令.
*******************************************************************
push ebp
pop ebp
push eax
pop eax
push esp
pop esp
push 0
push 0
push 10 -------其中数字可以任意,注意与下面对应
push -10
nop -----------可任意在中间添加
move edi,edi ----效果与nop一样
add esp,1 -------其中数字可以任意,注意以下面对应
add esp,-1
add esp,1 --------其中数字可以任意,注意以下面对应
sub esp,1
inc ecx
dec ecx
sub eax, -2 ----------其中数字可任意,与dec的个数对应
dec eax
dec eax
add eax -2 ----------其中数字可任意,与inc的个数对应
inc eax
inc eax
jmp 下一个jmp地址
jmp 下一个地址
push ebp
mov ebp,esp -------可做为花指令的开头句
jmp 入口地址 ------跳到程序入口地址
与它效果一样的还有(以下三个):
push 入口地址
retn
jb 入口地址
jnb 入口地址
mov eax,入口地址
jmp eax
********************************************************************
五.分析一段简单的花指令:
push eax
push eax
nop
pop eax
pop eax
sub eax,1
inc eax
push 入口地址
retn
花指令是一堆汇编指令组成,对于程序来说,是一堆废话,加不加花指令都
不影响程序的正常运行.编写的花指令要终始保持堆栈的平衡.
二.写花指令的原则:
写花指令的基本原则就是要保持堆栈的平衡.
写花指令细细品味下面一段比喻:
我们把一段花指令比喻成一道数学运算题,把汇编指令(push pop等)比喻成加减
乘除,把寄存器或数据(eax,ebx,1等)比喻成
数字(1,2,3等),那么要保持花指令堆栈的平衡,等于保持这道数学题的结果是0 .
三.解释一些指令含意
push ebp ----把基址指针寄存器压入堆栈
pop ebp ----把基址指针寄存器弹出堆栈
push eax ----把数据寄存器压入堆栈
pop eax ----把数据寄存器弹出堆栈
nop -----不执行
add esp,1-----指针寄存器加1
sub esp,1-----指针寄存器减1
inc ecx -----计数器加1
dec ecx -----计数器减1
sub esp,1 ----指针寄存器加1
sub esp,-1----指针寄存器加-1
jmp 入口地址----跳到程序入口地址
push 入口地址---把入口地址压入堆栈
retn ------ 反回到入口地址,效果与jmp 入口地址一样.
mov eax,入口地址 ------把入口地址转送到数据寄存器中.
jmp eax ----- 跳到程序入口地址
jb 入口地址
jnb 入口地址 ------效果和jmp 入口地址一样,直接跳到程序入口地址.
四.免杀花指令编写手册:
注:以后编写花指令,都可以参考本手册,灵活组合,快速写出自己的花指令.
*******************************************************************
push ebp
pop ebp
push eax
pop eax
push esp
pop esp
push 0
push 0
push 10 -------其中数字可以任意,注意与下面对应
push -10
nop -----------可任意在中间添加
move edi,edi ----效果与nop一样
add esp,1 -------其中数字可以任意,注意以下面对应
add esp,-1
add esp,1 --------其中数字可以任意,注意以下面对应
sub esp,1
inc ecx
dec ecx
sub eax, -2 ----------其中数字可任意,与dec的个数对应
dec eax
dec eax
add eax -2 ----------其中数字可任意,与inc的个数对应
inc eax
inc eax
jmp 下一个jmp地址
jmp 下一个地址
push ebp
mov ebp,esp -------可做为花指令的开头句
jmp 入口地址 ------跳到程序入口地址
与它效果一样的还有(以下三个):
push 入口地址
retn
jb 入口地址
jnb 入口地址
mov eax,入口地址
jmp eax
********************************************************************
五.分析一段简单的花指令:
push eax
push eax
nop
pop eax
pop eax
sub eax,1
inc eax
push 入口地址
retn
您在这个论坛的权限:
您不能在这个论坛回复主题