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

加花指令手册



作者:Μr.雷 文章来源:本站原创 点击数:200 更新时间:2007-2-16

一.花指令概念:

花指令是一堆汇编指令组成,对于程序来说,是一堆废话,加不加花指令都

不影响程序的正常运行.编写的花指令要终始保持堆栈的平衡.

二.写花指令的原则:

写花指令的基本原则就是要保持堆栈的平衡.

写花指令细细品味下面一段比喻:

我们把一段花指令比喻成一道数学运算题,把汇编指令(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 ----------其中数字可任意,与inc的个数对应

inc eax

inc 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























简单的

加花指令和加密MessageBox
[入库:2005年8月19日] [来源]
本文简介:选择自 huangrui3272 的 blog

不要调用afxmessagebox,因为mfc只是对api的封装。反汇编后显示的还是api。



例子:



char m[]="你成功了!!";
char n[]="恭喜!!";?

__asm {
mov ebx,esp //
push? mb_ok or mb_iconinformation
lea edx , m // 全局变量用 offset
push edx
lea eax, n // 局部变量用 lea
push eax
push 0




jnz label1 //花指令
jz label1
_emit 0e8h




label1:
lea eax,[messageboxexa+4] //不直接调用messageboxexa
sub eax,4 call dword ptr [eax] // eax为messageboxexa
mov esp,ebx //为了平衡堆栈,我也不知道为什么要,应该不要的,但不要不行
}



本文关

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