反编译技术与软件逆向分析
《反编译技术与软件逆向分析》共分10章。第1章到第3章简要介绍了软件逆向分析技术的相关基础知识;第4章和第5章从反汇编和中间表示两个方面为反编译奠定基础;第6章到第9章针对反编译的若干关键技术展开详细介绍;第10章则为反编译测试相关的一些可用资源。全书以IA-64可执行代码为例进行讲解,但相关技术可以向其他平台推广。, 《反编译技术与软件逆向分析》可作为计算机软件专业本科高年级学生、硕士研究生的相关课程教科书或教学参考书,也可供从事软件逆向分析工作的工程技术人员参考。反编译技术与软件逆向分析FAN BIAN YI JI SHU YU RUAN JIAN NI XIANG FEN XI赵荣彩庞建民张靖博编著陌出社·北京内容简介本书共分10章。第1章到第3章简要介绍了软件逆向分析技术的相关基础知识;第4章和第5章从反汇編和中间表示两个方面为反编译奠定基础;第6章到第9章针对反编译的若干关键技术展开详细介绍;第10章则为反编译测试相关的一些可用资源。全书以IA-64可执行代码为例进行讲解,但相关技术可以向其他平台推广。本书可作为计算机软件专业本科高年级学生、硕士研究生的相关课程教科书或教学参考书,也可供从事软件逆向分析工作的工程技术人员参考。图书在版编目(CP]数据反编译技术与软件逆向分析/赵荣彩,庞建民,张靖博编著北京:国防工业出版社,2009.11ISBN978-7-118-06546-6I.反.Ⅱ.①赵.②庞③张Ⅲ.①编译程序-程序设计②软件工程-分析程序Ⅳ.TP314TPl1.5中国版本图书馆CIP数据核字(2009)第162475号※阳酉·出散社出版发行(北京市海淀区紫竹院南路23号邮政编码100048)北京奥鑫印刷厂印刷新华书店经售开本710×9601/16印张14%字数252千字200年11月第1版第1次印刷印数1-3000册定价36.00元(本书如有印装错误,我社负责调换国防书店:(010)68428422发行邮购:(010)68414474发行传真:(010)68411535发行业务:(010)68472764编委会名单主编赵荣彩副主编庞建民张靖博编者赵荣彩庞建民张靖博付文汪淼吴伟峰前言随着计算机科学和相关技术的不断发展,尤其是各种编程语言的不断丰富与壮大,相关人员对贴近于硬件层的低级形式编码越来越陌生。但是,事实表明计算机软件领域从来没有过,也不可能真正脱离对繁琐的低级代码进行分析的需求,而软件逆向分析技术在近年来重新成为计算机科学领域的研究热点。在众多逆向分析技术中,反编译是对目标程序分析最为彻底,但也是最为困难的技术领域。从名称上可以看出,反编译技术是编译技术的逆过程,即将低级目标可执行代码翻译为语义等价的高级语言表示形式。本书希望能够为从事软件逆向分析的科研人员和工作者提供有效的帮助。与其他相关的逆向分析书籍不同的是,编者没有局限于对二进制代码的反汇编分析,或者局限于对不同逆向分析辅助工具的使用指导,而是希望能够在反汇编层面分析的基础上对目标低级程序进行进一步挖掘,从而获取更多的有效信息。毕竟现有的各种逆向分析工具的功能不一,不能完全满足业界复杂多变的需求。“授人以鱼,不如授之以渔”,本书希望能够帮助读者深入了解并掌握一个完整反编译工具的各个部分,从而编写真正满足自已需求的逆向分析工具。全书分为三大部分,共10章。第一部分,包括第1章至第3章。简要介绍了软件逆向分析技术的相关基础知识,为读者的进一步阅读奠定良好的基础。包括软件逆向分析的背景知识、不同体系结构指令系统的相关背景,以及针对可执行文件格式的介绍。在指令系统一章中介绍了两种完全不同的体系结构,即CISC体系结构和EPC体系结构,并且着重针对 Intel公司的64位安腾处理器的IA-64体系结构指令系统进行分析。在可执行文件格式章,则着重解析了在 Linux操作系统中流行的ELF可执行文件格式。第二部分,包括第4章、第5章。从反汇编和中间表示两个方面讲述程序分析技术。该部分内容起到了承前启后的作用,不仅帮助读者掌握如何分析二进制机器指令编码,并且介绍了逆向分析中常用的中间表示形式,从而帮助读者在进一步学习过程中积累必要的基础知识。第三部分为本书的精华,包括第6章至第10章。基本数据类型分析一章是在一些明确定义类型的基本类型的基础上,分析其他没有类型的变量,在格理论的框架之下寻找语句之间的相互关系,从而完成数据类型推导。高级控制流恢复一章介绍如何从线性的二进制可执行文件中挖据隐藏的高级控制结构,比如条件分支结构和循环结构。过程恢复技术一章则分别针对库函数和用户自定义函数展开,着重分析了在过程分析中涉及到的过程边界分析、参数/返回值分析等内容。部分编译优化效果的消除一章的内容并非试图降低程序的执行效率,而是在逆向分析的过程中,某些特定的编译优化效果在很大程度上将会阻碍逆向分析的正常进行,因此需要将优化的代码还原,该章围绕部分相关技术进行讨论。最后章介绍了常用的程序调试工具和逆向分析工具,并简要介绍了基本使用方法本书由解放军信息工程大学信息工程学院计算机科学与技术系赵荣彩教授带领相关课题组成员,在前期科研实践的基础之上完成的。杨克峤、张雪萌、孙维新、崔平非、朱晓珺、苏铭、齐宁、丁松阳等同志在攻读学位的同时也参与了部分章节的编写或准备工作,在此表示诚挚的感谢。在编写过程中,各级领导都对我们的工作表示了关心和帮助,并在各个方面大力支持编写工作的开展;不少教授、研究生为本书的最终完稿提出了很多很好的建议和帮助,在此表示衷心的感谢。由于编者水平有限,加之时间仓促,书中难免存在缺点和不足之处,甚至可能存在错误。殷切希望各位读者能够批评指正,给我们提出中肯、宝贵的意见。本书可作为计算机软件专业本科高年级学生、硕士研究生的教材或教学参考书。编者目录第1章绪论1.1软件逆向分析1.1.1与安全相关的逆向分析1.1.2针对软件开发的逆向分析1.1.3本书的主要内容……1.2软件逆向分析的历史1.3软件逆向分析的各个阶段1124566771.3.1文件装载1.3.2指令解码1.3.3语义映射·.·。··,···.······,,··,·····,·,,·。指1.3.4相关图构造1.3.5过程分析1.36类型分析1.3.7结果输出67788899991.4逆向分析框架…1.4.1静态分析框架……1.4.2动态分析框架101.4.3动静结合的分析框架10第2章指令系统…122.1指令系统概述…122.2机器指令与汇编指令…122.2.1机器指令………………………122.2.2汇编指令1423IA-64体系结构的特点………………………152.3.1显式并行机制162.3.2IA64微处理器体系结构182.4指令格式21Ⅵ本章小结24第3章可执行文件∴…253.1可执行文件概述253.2可执行文件格式253.2.1ELF文件的3种主要类型………263.2.2文件格式………263.2.3数据表示…263.24文件头…………273.2.5节3.2.6字符串表303.2.7符号表…313.3一个简单的ELF文件分析313.3.1文件头分析323.3.2 section信息分析…………………………33本章小结33第4章反汇编技术…354.1反汇编技术简介…354.2反汇编算法流程374.2.1线性扫描算法374.2.2递归扫描算法…384.3反汇编工具的自动构造方法……394.3.1自动构造工具394.3.2利用自动构造方法构建IA-64反汇编器…4.4常用反汇编工具介绍…424.4.1 IDA Pro介绍………………………………424.4.2mDam介绍44本章小结……………………45第5章指令的语义抽象475.1语义描述语言475.1.1SSL简介475.1.2SSL文法的设计475.1.3SSL文法的扩展…………………………………………525.2中间表示………555.2.1低级中间表示(RTL)……………………………5652.2高级中间表示(HRTL)…575.3指令的语义抽象技术5.3.1语义抽象技术简介…595.3.2指令语义的SSL描述5.3.3指令语义的高级模拟…………605.4基于SSL的IA-64指令语义抽象技术……615.4.1IA-64的体系结构特征描述…615.4.2整数指令的语义描述635.5基于模拟的IA-64指令语义抽象技术…665.5.1IA-64浮点特性5.5.2浮点指令的语义模拟685.5.3浮点并行指令的语义模拟………78本章小结第6章基本数据类型分析816.1数据类型分析的相关概念816.1.1mA系统中数据类型分析的依据826.1.2mA系统中基本数据类型分析的重要性…826.13mA系统中基本数据类型和高级C语言数据类型8262基于指令语义的基本数据类型分析…836.2.1&和*运算符…846.2.2普通算术指令的描述……86.2.3内存读写指令8556.2.4转移指令……866.3基于过程的数据类型分析技术876.3.1变量重命名技术876.3.2变量类型推导的规则896.3.3格理论在变量类型推导中的应用91本章小结……………第7章高级控制流恢复71控制流恢复概述…………7.1.1控制语句在中间代码中的组织特点887.1.2基本块的划分及控制流图的构建……………………1017.1.3控制流恢复术语1037.2高级控制流恢复分析………………………………106
下载地址
用户评论