
测试样例
选定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异常应用(简略)
当系统检测到异常时,马上会将发送异常的程序挂起,并交给系统特定的调试程序处理,而此时杀毒软件也会跟随程序的执行流程转移到系统
Comments | NOTHING