为什么要写这篇教程呢?
本文章仅提供学习,切勿将其用于不法手段!
因为想要成为一名白帽黑客,汇编语言是必须要掌握的!
无论是二进制漏洞挖掘,还是逆向工程!汇编语言,都是硬性基础之一!当然,你还需要学会C语言!为什么要学会C语言呢?IDA软件 会将 二进制代码 翻译成 汇编语言 和 C语言 !
你不会汇编语言,不会C语言,想要进行逆向工程,以及更深层次的 二进制漏洞挖掘,是非常困难!如果你希望挖掘 二进制漏洞 ,你还要学会 代码审计 !
你必须看得懂,汇编语言代码 和 C语言代码,这是硬性要求!
想要参加CTF竞赛,汇编语言 和 C语言 都是重要的底层基础知识。
接下来,让我们来讲一下,汇编语言编程的基础知识!
上面的图中,展示了汇编语言编程的大体流程!
在进行64位环境下的汇编语言编程时,我们要注意在调用函数时,保护好栈平衡!
什么是栈平衡呢?
栈平衡是指在函数运行时,编译器确保在函数结束之前,通过执行相同次数的pop指令来抵消函数内部执行的push指令,从而使栈恢复到执行该函数之前的状态。
在汇编语言中,栈平衡是确保程序正确执行的重要概念。当函数调用时,会将参数、返回地址等信息压入栈中,函数执行完毕后,需要将这些信息从栈中弹出,以恢复栈的原始状态。这个过程就是栈平衡。
栈平衡分为内平栈和外平栈两种方法。内平栈是在函数内部进行平衡操作,确保在函数返回之前栈已经平衡;而外平栈则是在函数外部,通过调用者来恢复堆栈状态。
在上图中,我们所使用的栈平衡方法,为 “ 内平栈 ” 和 “ 外平栈 ” 的结合!
在函数内部ÿ