免杀基础(2)—-花指令

发布于 2022-02-22  92 次阅读


测试样例

选定ollydbg中test.exe作为样例

选取该地址作为花指令插入地址

选择二进制编辑,添加cmd /c dir c:\lookme.txt

再在空一行处添加PUSH 0

再在下面添加指令PUSH 00415600 这里使用花指令插入时的地址

再在下面插入CALL WinExec和jmp 004148E8 (原程序入口点)(我也不知道这个入口点找的对不对)

最后在LordPE中修改入口点地址为0x00415600-0x00400000=0x00015600即可

总而言之,这样一个简单的花指令就完成了。

这样入栈的原因时WinExec(系统命令,0),汇编调用API函数遵行从右到左的压栈格式,所以先将0入栈,再将系统命令入栈,最后jmp到程序原本的入口点

花指令入门

push ebp
mov ebp,esp
add esp ,-0C
add esp ,0C
push eax
jmp xxxx

通过调整esp栈指针寄存器,保证堆栈平衡即可

常用花指令集合

Nop 

pop 0
pop 0

push ebp
pop ebp

add esp,1
sub esp,1

add/sub/inc esp,1
add/sub/dec esp,-1

sub eax,-2
dec eax
dec eax

push 入口地址
retn

mov eax,入口地址
jmp eax

如何干扰反汇编

一类反汇编算法是IDA的递归行进算法,一类反汇编算法是OllyDbg使用的线性扫描算法(最容易被花指令迷惑)

pushad;
mov eax,1;
//在这里添加_EMIT 0xB8 
mov eax,2;
popad;

如上添加数据定义后,反汇编就会被欺骗,把0xB8当作代码解释。

花指令应在无壳时的木马中使用,花指令本身可能就包含特征码

SEH异常应用(简略)

当系统检测到异常时,马上会将发送异常的程序挂起,并交给系统特定的调试程序处理,而此时杀毒软件也会跟随程序的执行流程转移到系统


间桐桜のお菓子屋さん