花指令学习资料

    技术2022-05-11  65

    一.花指令概念: ★花指令是一堆汇编指令组成,对于程序来说,是一堆无用的代码,相当于在原地向左转然后向右转来把别人转晕了就是我们的成功.加不加花指令都不会影响程序的正常运行.编写的花指令要终始保持堆栈的平衡.比如我们的程序运行一半了突然跑去自定义计算个1+1=2,然后继续回来执行刚才的程序后半部分,这样看起来很弱智,但对杀毒软件来说,这会严重降低他们的查毒能力. ★堆栈的解释:相当于在仓库货物时先一件件堆放进去,但是取的的时候只能从最上面取出来,我们把这个原理用在编程上就叫做堆栈----也就是所谓的"先进后出,后进先出"原则』 二.写花指令的原则: 写花指令的基本原则就是要保持堆栈的平衡.  写花指令细细品味下面一段比喻:  我们把一段花指令比喻成一道数学运算题,把汇编指令(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 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 入口地址一样,直接跳到程序入口地址. 说明:必须对汇编语言有所了解才能更好地理解文中的概念.. 

    最新回复(0)