二进制分析实战,逆向工程体偏差分析

大多数计算机程序都是用C或C++等高级语言编写的,无法直接执行。在使用它们之前,必须将它们编译成包含计算机可以执行的机器语言的二进制可执行文件。但是您如何知道您编译的程序是否与高级源代码具有相同的语义?令人不安的答案是您不知道。

高级语言和二进制机器语言之间存在巨大的语义鸿沟,因此很少有人知道它们之间是如何关联的。大多数程序员对他们的程序在幕后所做的事情了解有限,只是相信编译后的程序会按预期运行。因此,许多编译器错误、微妙的实现错误、二进制级后门和恶意寄生站点可能会被忽视。

更糟糕的是,工业、银行和嵌入式系统包含无数的二进制程序和库,随着时间的推移,其源程序可能会丢失或私有。这意味着这些程序和库无法使用传统方法修复。在源代码级别应用补丁或评估安全性。即使对于大型软件公司来说,这也是一个严重的问题。例如,微软最近发布了一个精心设计的二进制补丁来解决Microsoft Office 公式编辑器程序中的缓冲区溢出问题。

如何在二进制级别分析和修改程序。

《二进制分析实战》

我们可以消除您的疑虑。

无论您是安全研究人员、恶意软件分析师、程序员,还是只是对二进制分析感兴趣的人,这些技术都可以帮助您了解并深入了解您每天创建和使用的二进制文件。

本书的主要目标是让您成为一名全面的二进制分析器,并熟悉该领域的所有重要主题,包括二进制检测、污点分析和符号执行等基础和高级主题。本书无意成为一本全面的资源,因为二进制分析的领域和工具变化很快,一本全面的书可能很快就会过时。相反,本书的目的是让您了解所有重要主题并帮助您更加独立地学习。同样,本书并未涵盖逆向工程x86 和x86-64 代码(附录A 中介绍了基础知识)或分析这些平台上的恶意软件的所有复杂问题。关于这些主题已经有很多专门的书籍,因此这里没有必要重复它们的内容。

本书分为四个部分。

第1 部分“二进制格式”

介绍对于理解本书其余部分非常重要的二进制格式。如果您已经熟悉ELF 和PE 二进制格式以及libbfd,则可以跳过本节中的一章或多章。

第一章“二进制简介”

提供二进制程序分析的概述。

第2 章“ELF 格式”

介绍Linux 上使用的ELF 二进制格式。

第3 章“PE 格式概述”

PE 和Windows 使用的二进制格式的简要说明。

第4 章“使用libfd 创建二进制加载器”

演示如何使用libbfd 解析二进制文件并构建本书其余部分中使用的二进制加载器。

第2 部分“二元分析基础知识”

包含基本的二进制分析技术。

第5 章“Linux 二进制分析”

介绍适用于Linux 的基本二进制分析工具。

第6 章“反汇编和二进制分析的基础知识”

涵盖基本分解技术和基本分析模式。

第7 章,“简单的ELF 代码插入技术”

在本章中,您将首次了解如何使用寄生代码插入和十六进制编辑等技术来修改ELF 二进制文件。

第3 部分“高级二进制分析”

介绍高级二进制分析技术。

第8 章“自定义反汇编”

演示如何使用Capstone 创建自定义反汇编工具。

第9 章“二进制仪器”

本文向您展示如何使用Pin 修改二进制文件。 Pin是一个成熟的二进制工具平台。

第10章“动态污染分析的原理”

我们介绍动态污点分析的原理,这是一种非常先进的二进制分析技术,可让您跟踪程序内的数据流。

第11章“基于libdft的动态污点分析”

了解如何使用libdft 构建您自己的动态污点分析工具。

第12章“符号执行的原理”

仅用于符号执行。这是另一种先进技术,可用于自动推断复杂程序的属性。

第13 章,“使用Triton 实现符号执行”

演示如何使用Triton 构建实用的符号执行工具。

第4 部分“附录”

包含可能有用的资源。

附录A,“x86 汇编快速入门”

为不熟悉x86汇编语言的读者提供简要介绍。

附录B,“使用libelf 实现PT_NOTE 覆盖”

第7 章提供了所使用的elfinject 工具的实现细节,并介绍了libelf。

附录C“二进制分析工具列表”

包含您可以使用的二进制分析工具的列表。

什么是二进制分析以及为什么需要它?二进制分析是分析计算机二进制程序(称为二进制文件)及其包含的机器代码和数据的属性的科学和艺术。换句话说,所有二进制分析的目标都是发现(并可能改变)—— 二进制程序的真实属性。换句话说,发现二进制程序实际上做了什么,而不是我们认为它们应该做什么。许多人将二进制分析与逆向工程和反汇编联系起来,这至少部分正确。尽管反汇编是许多形式的二进制分析的重要第一步,但逆向工程是二进制分析的常见应用,并且通常是记录专有软件或恶意软件行为的唯一方法。然而,二进制分析的世界远远不止于此。从广义上讲,二进制分析技术可以分为两类,或这两类的组合:

静态分析。

静态分析技术分析二进制文件而不运行它们。这种方法有两个优点。首先,它可以一次性分析整个二进制文件,其次,它不需要特定的CPU 来运行二进制文件。例如,您可以静态分析x86 计算机上的ARM 二进制文件。这种方法的缺点是静态分析无法了解二进制文件在执行过程中的状态,这使得分析变得非常困难。

动态分析。

与静态分析相反,动态分析执行二进制文件并在运行时分析它们。这种方法通常比静态分析更容易,因为它提供了对整个运行时状态的完整理解,包括变量的值和条件分支的结果。但是,由于您只能看到执行的代码,因此这种方法可能会错过程序中有趣的部分。

静态分析和动态分析各有其优点和缺点,本书将教您这两种方法的技术。除了被动二进制分析之外,您还将学习二进制检测技术来修改二进制文件,而无需源代码。二进制检测依赖于反汇编等分析技术,可用于辅助二进制分析。鉴于二进制分析和仪器技术之间的共生关系,本书涵盖了这两个领域。

如前所述,您可以使用二进制分析来记录和测试源代码程序。然而,即使源代码可用,二进制分析对于查找在二进制级别比在源代码级别更明显的细微错误也特别有用。许多二进制分析技术对于高级调试也很有用。本文介绍了可以在这些场景中使用的二进制解析技术。

为什么二进制分析很难二进制分析很困难,比源代码级别的等效分析要困难得多。事实上,许多二进制分析任务本质上是不确定的,这意味着不可能构建一个始终为这些问题返回正确结果的分析引擎。为了了解未来的挑战,这里列出了二进制分析的原因。的难度。不幸的是,这个列表并不完整。

没有任何符号信息。

当您使用高级语言(例如C 或C++)编写源代码时,您可以为变量、函数、类和其他结构指定有意义的名称。这些名称称为符号信息,或简称为符号。正确的命名约定使源代码更容易理解,但它们在二进制级别上并不真正相关。因此,二进制文件通常会被删除符号,从而使代码更难以理解。

无类型信息。

高级语言的另一个特点是定义良好的变量类型(如int、float、string)和更复杂的数据结构(如struct类型)。相反,类型没有在二进制级别显式声明,因此很难推断数据的用途和结构。

没有高级抽象。

现代程序分为类和函数,但编译器丢弃了这些高级信息。这意味着二进制文件看起来是一大块代码和数据,而不是一个结构良好的程序。因此,将二进制文件恢复为其高级结构的过程非常复杂且容易出错。

混合代码和数据。

二进制文件可以(并且确实)包含与可执行代码混合的数据。这使得将数据解释为代码变得更容易。反之亦然,但这可能会导致错误的结果。

位置相关的代码和数据。

由于二进制文件不可修改,因此即使添加一条机器指令也可能会导致代码移位问题,从而使代码中其他位置的内存地址和引用无效。因此,任何类型的代码或数据修改都是非常困难的,并且很容易破坏二进制文件。

由于上述挑战,我们在实践中经常面临不准确的分析结果。二进制分析的一个重要部分是寻找创造性的方法来构建即使出现解析错误也可以使用的工具。

谁应该阅读这本书? 本书面向安全工程师、学术安全研究人员、逆向工程师、恶意软件分析师和对二进制分析感兴趣的计算机科学专业的学生。

此外,本书涵盖了更高级的知识,需要一些编程和计算机系统的基础知识。要充分利用本书,您需要:

能够使用C 和C++ 进行有效编程。

了解操作系统的内部结构,比如什么是进程,什么是虚拟内存。

了解如何使用Linux shell(尤其是bash)。

x86/x86-64 汇编程序的使用知识。如果您还不了解汇编,请务必先阅读附录A。

如果您以前从未编程过或者不喜欢深入研究计算机系统的底层细节,那么这本书可能不适合您。

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/674014.html

(0)
上一篇 2024年6月4日
下一篇 2024年6月4日

相关推荐

  • 和平精英手册代码怎么用?

    和平精英手册代码怎么用? 1、和平精英代码可以对四大金刚使用,上色,天线,除草,和平精英空白代码:直接去复制空白字符的代码,复制之后在更改名字,点击确认即可,这样可以轻松的改名。 和平精英怎么购买精英手册? 玩家们点击首页的手册按钮,进入后直接点击购买,有普通和豪华两种礼包供玩家选择,玩家们可以根据自己的需求购买对应的礼包 和平精英怎么解除精英手册? 和平精…

    游戏快讯 18分钟前
  • 和平精英绿洲世界龙舞长城任务怎么过?

    和平精英绿洲世界龙舞长城任务怎么过? 《和平精英》中的绿洲世界地图中的龙舞长城任务需要完成以下步骤: 1. 寻找任务标志:在绿洲世界地图中,你需要找到任务标志,通常以一个感叹号或任务图标的形式显示在地图上。 2. 前往任务地点:根据任务标志所在位置,前往指定的地点。通常任务地点会有一定的提示,你可以根据提示找到具体位置。 3. 完成任务:到达任务地点后,你需…

    游戏快讯 1小时前
  • 和平精英四倍镜左右晃动怎么办?

    和平精英四倍镜左右晃动怎么办? 如果你在和平连四倍都压不准的话,你可以打开设置点开陀螺跟陀螺仪,然后去看主播怎样调的陀螺仪,然后你再试着,如果还是不行,你再调调一下子,如果还是不行的话,你就只能去看主播是怎么调的。如果这个陀螺仪不适合你的话,你可以换一个自己调。 和平精英四倍镜最稳灵敏度? 和平精英四倍灵敏度调整为7%,最稳灵敏度越大,镜头移动速度越快,开火…

    游戏快讯 3小时前
  • 如何压枪不抖和平精英?

    如何压枪不抖和平精英? 和平精英压枪技巧 1.要想压枪不抖,开火灵敏度不能太高。太高的话就会上下抖动的比较厉害,影响压枪。记住这一点:开火灵敏度越高,压枪会轻松些,但是枪也会容易抖动,稍微用力一点,它就会抖动的很厉害;而开火镜头灵敏度越低,枪支的抖动就会越小,这时虽然要用点力度压枪,但是会很稳。 2.配件的选择。枪支的配件选择,也是很重要的。以M416为例,…

    游戏快讯 4小时前
  • 和平精英换枪换不了? 和平精英怎样兑换枪?

    和平精英换枪换不了? 面对战的时候不要换武器可以说是最基本的常识了,因为在对战的时候换武器会有长时间的僵直,在这段时间中,可能还没有开枪就被对面击杀了,因此千万不要当面换枪,最好找到一个掩体,或者是不停地移动换枪,这样可以规避大量的伤害,给自己留出更长的时很多情况根本就不允许我们随意的换武器, 和平精英怎样兑换枪? 和平精英中不支持枪支兑换,只能通过游戏里的…

    游戏快讯 6小时前