二进制代码利用是一种黑客攻击技术,是指黑客在程序中发现漏洞并通过漏洞利用使应用程序执行设计之外的操作的技术。例如,绕过身份验证、泄露机密信息,也可能进行远程代码执行(RCE)。
通常,黑客是通过破坏应用程序的内存来操控应用程序的。栈是用来存储函数局部变量的内存区域,最常见的二进制代码利用一般发生在栈上。当一个新函数被调用时,程序中调用函数命令的下一条命令的内存地址被压栈,这样,一旦被调用函数完成执行,程序就知道返回到哪里。很多二进制代码利用就是通过缓冲区溢出覆盖函数的返回地址,从而达到控制程序执行的目的。
黑客在进行二进制代码利用时,需要首先掌握程序是怎样工作的,工作流程是怎样的。在源码不可知的情况下,需要先对二进制代码进行分析。
迄今为止,缓冲区溢出攻击仍是网络安全中的一个重大问题。在软件安全领域,缓冲区溢出漏洞依然是头号敌人。本书以二进制代码中的缓冲区溢出漏洞为主要例子介绍二进制代码安全性分析和利用涉及的原理、技术、方法,主要内容包括二进制代码的生成、二进制代码信息的收集、二进制代码的静态分析技术、二进制代码的脆弱性评估技术、二进制代码漏洞的利用。