«

花指令免杀

ljierui 发布于 阅读:81 技术杂谈


1、花指令免杀

1.1、概述

  1. 花指令:是汇编语言的一种技术,就是采用了一些干扰指令对程序进行类似加密的操作
  2. 花指令:就是一段本可以不存在的指令,它存在的唯一目的就是掩盖程序中的一些东西

1.2、常用的汇编语法

指令 作用
mov(传送指令) mov ebp,esp; 将esp的值传递给ebp
push(进栈指令) push ebp; 将ebp压入栈
pop(出栈指令) pop ebp; 将栈顶的数据弹出,保存在ebp
add(加法指令) add esp,8; 将esp加0x8
sub(减法指令) sub esp,8; 将esp减0x8
inc(增量指令) inc ecx; ecx加1
dec(减量指令) dec ecx; ecx 减1
jmp(无条件转移指令) jmp 00000001; 跳转到地址00000001
call(子程序调用指令) call 00001234; 调用位于00001234处的子程序

1.3、常用的花指令组合

Nop; // 空指令,无作用(常被用来干扰反病毒软件)

pop 0; // 将0弹出栈堆
pop 0; // 将0弹出栈堆

push ebp; // 将ebp压入栈堆
pop ebp; // 将ebp弹出栈堆

add esp,1; // 将esp加1
sub esp,1; // 将esp减1

add esp,1; // 将esp加1
add esp,-1; // 将esp加-1

sub esp,1; // 将esp减1
sub esp,-1; // 将esp减-1

inc ecx; // ecx加1
dec ecx; // ecx减1

sub eax,-2; // 将eax减去-2,其实也就是加上2
dec eax; // eax减1
dec eax; // eax减1

push 00001234; // 将入口地址压入栈
retn; // 返回入口地址

mov eax,00001234; // 将入口地址传送到数据寄存器中
jmp eax; //跳到程序入口地址

1.4、花指令在免杀的应用

push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 程序入口点

1.5、搜索空白区域

免杀

推荐阅读: