本文目录一览:
逆向工程是怎么实现的?能举例吗?
逆向工程(又名反向工程,Reverse Engineering-RE)是对产品设计过程的一种描述。在2007年初,我国相关的法律为逆向工程正名,承认了逆向技术用于学习研究的合法性。
在工程技术人员的一般概念中,产品设计过程是一个从设计到产品的过程,即设计人员首先在大脑中构思产品的外形、性能和大致的技术参数等,然后在详细设计阶段完成各类数据模型,最终将这个模型转入到研发流程中,完成产品的整个设计研发周期。这样的产品设计过程我们称为“正向设计”过程。逆向工程产品设计可以认为是一个从产品到设计的过程。简单地说,逆向工程产品设计就是根据已经存在的产品,反向推出产品设计数据(包括各类设计图或数据模型)的过程。从这个意义上说,逆向工程在工业设计中的应用已经很久了。比如早期的船舶工业中常用的船体放样设计就是逆向工程的很好实例。
随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息成为软件逆向工程技术关注的主要对象。软件逆向技术的目的是用来研究和学习先进的技术,特别是当手里没有合适的文档资料,而你又很需要实现某个软件的功能的时候。也正因为这样,很多软件为了垄断技术,在软件安装之前,要求用户同意不去逆向研究。
逆向工程的实施过程是多领域、多学科的协同过程。
黑客与逆向工程师的Python编程之道的简介
我为了进行黑客技术研究而特地学习了Python这门语言,我敢断言在这个领域中的众多其他同行们也是如此。我曾经花费了大量的时间来寻找一种能够同时适用于黑客技术和逆向工程领域的编程语言,就在几年前,Python成为了黑客编程领域内显而易见的王者。而一个不尽人如意的事实是,到目前为止还没有一本真正意义上的参考手册,来指导你将Python应用于不同的黑客技术场景中。你往往需要游走于各大论坛的技术讨论帖子中或者各种工具手册中。有时为了使你的工具能够正确地运转起来,花费一番不小的功夫来阅读和调试源代码也是司空见惯的情况。而本书正是致力于填补这方面的空缺,将引领你经历一次“旋风”之旅——你将看到Python这门语言是如何被应用在各式各样的黑客技术与逆向工程场景中的。
本书将向你揭示隐藏在各种黑客工具背后的原理机制,其中包括:调试器、后门技术、Fuzzer、仿真器以及代码注入技术,本书将向你一 一演示如何驾驭这些技术工具。除了学到如何使用现有的基于Python的工具之外, 你还将学习如何使用Python构建自己的工具。需要有言在先的一点就是,这并不是一本大全式的参考手册!有大量使用Python编写的信息安全类工具未在此书中被提及。本书的信条是授之以渔,而非授之以鱼!你应当把从本书中所获得的技能灵活地应用于其他的场景中,根据自身的需求对你选择的其他Python工具进行调试,并做出扩展和定制。
阅读本书的方式不仅限于一种,如果你是个Python新手或者对于构建黑客工具尚感陌生,那么从前往后依次阅读对你来说是更好的选择,你将从最基本的理论开始,并在阅读本书的过程中编写相当数量的Python代码。当你阅读完本书时,你应当具备了自行解决各种黑客或逆向工程任务的能力。如果你对Python已有一定程度的了解,并且对Ctype库的使用驾轻就熟,那么不妨直接跳过第1章。对于那些行业浸沉已久的老手,相信你们可以在本书中来回穿梭自如,欢迎你们在日常工作中随时按需撷取本书中的代码片段或者相关章节。
本书在调试器相关的内容上花费了相当的篇幅,从第2章讲述调试器的基本原理开始,直至第5章介绍完Immunity Debugger为止。调试器对于任何一个真正的黑客而言都是至关重要的工具,因此我毫不吝惜笔墨来对它们进行广泛而全面的介绍。在之后的第6章和第7章中你将学到一些钩子和代码注入的技术,这些技术同样可以被调试器工具采用,作为控制程序流和操纵内存的手段。
本书接下来的焦点放在使用Fuzzer工具来攻破应用程序体系上。在第8章中,你将开始学习基本的Fuzzing技术理论,我们将构建自己的文件Fuzzing工具。第9章将向你演示如何驾驭强大的Fuzzing框架——Sulley来攻破一个现实世界中的FTP daemon程序。在第10章中,你将学习如何构建一个Fuzzer工具来攻击Windows驱动。
在第11章中,你将看到如何在IDA Pro中(一款流行的二进制静态分析工具)实现自动化执行静态分析任务。在第12章中,我们将介绍一款基于Python的仿真器——PyEmu,来为本书画上句号。
我试着使出现在本书中的代码尽量简洁,并在某些特定的地方加上了详细的注释以帮助你理解代码的本质。学习一门新的编程语言或者掌握一套陌生的函数库的过程少不了你自己的亲身实践,以及不断的自我纠正。
黑客与逆向工程师的python编程之道 怎么样
Python是一款非常流行的脚本编程语言。特别是在黑客圈子里,你不会Python就几乎无法与国外的那些大牛们沟通。这一点我在2008年的XCon,以及2009年的idefense高级逆向工程师培训中感触颇深。前一次是因为我落伍,几乎还不怎么会Python,而后一次……记得当时我、海平和Michael Ligh(他最近出版的Malware Analyst's Cookbook and DVD: Tools and Techniques for Fighting Malicious Code)一书在Amazon上得了7颗五星!)讨论一些恶意软件分析技术时经常会用到Python,从Immunity Debugger的PyCommand、IDA的IDAPython到纯用Python编写的Volatility工具(这是一款内存分析工具,用于发现rootkit之类的恶意软件)。Python几乎无处不在!我也尝试过对Volatility进行了一些改进,在电子工业出版社举办的“在线安全”Open Party上海站活动中,我以《利用内存分析的 *** 快速分析恶意软件》为题进行了演讲。
遗憾的是,之前市面上还没有一本关于如何利用黑客工具中提供的Python(由于必须使用许多黑客工具中提供的库函数,所以这时你更像在用一种Python的方言编程)的书籍。故而,在进行相关编程时,我们总是要穿行于各种文档、资料之中,个中甘苦只自知。
本书的出版满足了这方面的需求,它会是我手头常备的一本书,啊不!是两本,一本备用,另一本因为经常翻看用不了多久就肯定会破烂不堪。
说到这本书的好处也许还不仅于此,它不仅是一本Python黑客编程方面的极佳参考书,同时也是一本软件调试和漏洞发掘方面很好的入门教材。这本书的作者从调试器的底层工作原理讲起,一路带你领略了Python在调试器、钩子、代码注入、fuzzing、反汇编器和模拟器中的应用,涵盖了软件调试和漏洞发掘中的各个方面,使你在循序渐进中了解这一研究领域目前最新研究成果的大略。
本书译者的翻译也很到位。不客气地说,不少好书是被糟糕的翻译耽误掉的。比如我在读大学时的一本中文版的参考书,我看了三遍没明白是怎么回事,后来想起老师推荐时用的是英文版,于是试着去图书馆借了本英文版,结果看一遍就明白了。不过这本书显然不属于此例。译者丁赟卿本来就是从事这一领域研究的,对原文意思的理解非常到位,中文用词也十分贴切。特别是这本书的英文版中原本是存在一些错误的(包括一些代码),译者在中文版中竟然已经一一予以纠正了,从这一点上也可以看出译者在翻译过程中的认真细致。
我已经啰啰嗦嗦地讲了不少了,你还在等什么?还不快去账台付钱?