-
Reversing:逆向工程揭密 (中文PDF版)下载
资源介绍
本书描述的是在逆向与反逆向之间展开的一场旷日持久的拉锯战。作者Eldad Eilam以一个解说人的身份为我们详尽地评述了双方使用的每一招每一式的优点与不足。
书中包含的主要内容有:操作系统的逆向工程;.NET平台上的逆向工程;逆向未公开的文件格式和网络协议;逆向工程的合法性问题;拷贝保护和数字版权管理技术的逆向工程;防止别人对你的代码实施逆向工程的各种技术;恶意程序的逆向工程;反编译器的基本原理以及它对逆向过程的影响。
本书适合软件逆向工程的从业人员以及软件开发者们阅读。
前言回到顶部↑欢迎你阅读《逆向:逆向工程揭密》一书。本书是在我参与了多年的软件开发项目之后写的,这些项目由于各种各样的原因需要反复地对第三方代码进行逆向工程。起初,我觉得这是一个非常单调乏味的过程,只是在没有替代方法来获取信息的情况下才不得已使用它。后来,一霎那间我破除了某个思维障碍,我发现自己迅速地“驰骋”于无正式文献记录的机器码中,快速地破译了代码的涵义并得到我想要的有关代码功能和用途的答案。这时候,我逐渐明白这是一种威力强大的技术,因为这意味着不管我有什么样的有关要处理软件的问题,我都可以非常容易地找到答案,即使我没有看过任何相关的文献资料或者正在处理的程序的源代码。本书就是要为每一个对软件有深刻理解的读者能够这样做提供相关的知识和技术。.
其思想很简单:我们应当对底层软件有深入的理解,还要学习那些能够让我们轻松进入任何程序的二进制码并获取信息的技术。不知道系统为什么会以它那样的工作方式运转而且其他人也不知道答案的话,怎么办?没问题——你完全可以自己深入研究并找到答案。这听起来有点恐怖和不现实,是吗?一点儿也不,我写这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。
不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。
逆向工程和底层软件
在开始进入本书所讨论的各部分内容之前,我们应当正式地介绍一下该书的主题:逆向工程。逆向工程是指将工程制品(比如汽车、喷气发动机或者软件程序)以揭示其最底层的细节(如其设计和架构)的方式进行解构的过程。这与研究自然现象的科学研究有些类似,区别就在于一般没有人会把科学研究看做逆向工程,这仅仅是因为没有人确切地知道自然算不算是工程制品。
对软件而言,逆向工程归结起来就是拿一个既没有源代码又没有准确文献资料的现成程序,尝试恢复出它的设计和实现细节。在某些情况下,可以找到程序的源代码,但是找不到最初的开发人员了。本书所讨论的就是通常所说的二进制逆向工程。二进制逆向工程技术的目标是从没有源代码的程序中提取有价值的信息。在有些情况下可以从程序的二进制代码中恢复出准确的源代码(或者接近高级表示的代码),这会大大简化逆向工作,因为阅读用高级语言写的代码要比阅读低级汇编语言代码容易得多。在其他情况下,我们最终得到的只是用晦涩难懂的汇编语言程序清单。本书将讲述这一过程以及程序为什么这样运行,同时还将详细描述如何在各种不同的环境中破解程序代码。
我决定将这本书取名为“逆向(Reversing)”,这一叫法被许多在线社区用来描述逆向工程。因为你可以把逆向看做是逆向工程的别名,故我将在本书中交换使用这两种叫法。
大多数人在尝试想像从可执行二进制程序中提取有意义的信息的时候会变得有些焦虑,因此,我把这本书的首要任务定为证明这种害怕是没有必要的。二进制逆向工程如果行得通的话,它通常能解决用其他方法解决起来极其困难的问题,而且如果方法得当的话它也没有你想像的那么复杂。
本书主要讨论逆向工程,但事实上书中所讲述的内容要比逆向工程多得多。在软件行业内,逆向工程被频繁地应用于各种场合,本书的主要目标之一就是在讲授逆向工程的同时研究这些领域。
下面简要地列出了本书要讨论的一些主题:
IA-32兼容处理器的汇编语言以及如何阅读编译器生成的汇编语言代码;
操作系统内幕以及如何对操作系统实施逆向工程;
.NET平台上的逆向工程,包括.NET开发平台的简介及.NET平台汇编语言:MSIL(Microsoft中间语言);
数据逆向工程:如何破译未公开的文件格式或者网络协议;
逆向工程的合法性问题:什么情况下是合法的,什么情况下是非法的?
拷贝保护和数字版权管理技术;
破解人员是如何应用逆向工程使拷贝保护技术失效的;
防止人们对代码实施逆向工程的技术并认真尝试评价这些技术的有效性;..
目前恶意程序的基本原理以及如何应用逆向工程研究并清除这样的程序;
一个真实恶意程序的现场剖析和展示,以及揭示了攻击者是怎样通过程序通信获得被感染系统的控制权的
- 上一篇: 开发板出厂编程程序.rar
- 下一篇: 王爽《汇编语言》第二版的习题答案