二进制分析实战 二进制分析实战 中文版( 三 )

  • 没有类型信息 。高级语言的另一个特性是它们定义明确的变量类型(如int、float或string)以及更复杂的数据结构(如struct类型) 。相反,在二进制级别上,类型从来没有被明确地声明过,这使得数据的用途和结构难以推断 。
  • 没有高级抽象 。现代程序被划分为类和函数,但是编译器扔掉了这些高级信息 。这意味着二进制文件看起来是大量的代码和数据,而不是结构良好的程序,因而将其恢复为高级结构的过程非常复杂,且容易出错 。
  • 混合代码和数据 。二进制文件可以(并且确实)包含与可执行代码混合在一起的数据片段 。这使得将数据解释为代码很容易 。反之亦然,但这会导致错误的结果 。
  • 位置相关的代码和数据 。由于二进制文件的设计初衷不包括可修改,所以即使只添加一条机器指令也可能会产生其他代码移位的问题,从而使内存地址和代码中其他地方的引用无效 。因此,任何类型的代码或数据修改都极具挑战性,并且容易破坏二进制文件 。
  • 由于以上这些挑战,所以我们在实践中不得不经常面对不精确的分析结果 。二进制分析的一个重要部分是,尽管存在分析错误,但仍要以创造性的方式构建可用的工具!
    谁需要阅读这本书这本书的目标读者包括安全工程师、学术安全研究人员、逆向工程师、恶意软件分析师和对二进制分析感兴趣的计算机科学专业学生 。。
    另外,因为这本书涵盖了较高级的知识,所以一些编程和计算机系统的基础知识是必需的 。为了充分利用这本书,你应该具备以下几点:
    • 可以使用C和C++进行有效编程;
    • 了解操作系统的内部(进程是什么,虚拟内存是什么等);
    • 了解如何使用Linux shell(尤其是bash);
    • 具有x86/x86-64汇编程序的工作知识 。如果你还不了解任何程序集,请确保先阅读附录A 。
    如果你以前从未编写过程序,或者不喜欢钻研计算机系统的底层细节,那么这本书可能不适合你 。


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: