具体描述
逆向工程是一种分析目标系统的过程,旨在于识别系统的各组件以及组件间关系,以便于通过其它形式、或在较高的抽象层次上,重建系统的表征。
本书专注于软件的逆向工程,是写给初学者的一本经典指南。全书共分为12个部分,共102章,涉及X86/X64、ARM/ARM-64、MIPS、Java/JVM等重要话题,详细解析了Oracle RDBMS、Itanium、软件狗、LD_PRELOAD、栈溢出、ELF、Win32 PE文件格式、x86-64(第、critical sections、syscalls、线程本地存储TLS、地址无关代码(PIC)、以配置文件为导向的优化、C++ STL、OpenMP、SHE等众多技术话题,堪称是逆向工程技术百科全书。除了详细讲解,本书来给出了很多习题来帮助读者巩固所学的知识,附录部分给出了习题的解答。
本书适合对逆向工程技术、操作系统底层技术、程序分析技术感兴趣的读者阅读,也适合专业的程序开发人员参考。
作者简介
Dennis Yurichev,乌克兰程序员,安全技术专家。读者可以通过https://yurichev.com/联系他,并获取和本书相关的更多学习资料。
目录信息
版权声明
内容提要
序 从逆向视角透视代码大厦的那些砖石
前言
第一部分 指令讲解
第1章 CPU简介
第2章 最简函数
第3章 Hello,world!
第4章 函数序言和函数尾声
第5章 栈
第6章 printf()函数与参数调用
第7章 scanf()
第8章 参数获取
第9章 返回值
第10章 指针
第11章 GOTO语句
第12章 条件转移指令
第13章 switch()/case/default
第14章 循环
第15章 C语言字符串的函数
第16章 数学计算指令的替换
第17章 FPU
第18章 数组
第19章 位操作
第20章 线性同余法与伪随机函数
第21章 结构体
第22章 共用体(union)类型
第23章 函数指针
第24章 32位系统处理64位数据
第25章 SIMD
第26章 64位平台
第27章 SIMD与浮点数的并行运算
第28章 ARM指令详解
第29章 MIPS的特点
第二部分 硬件基础
第30章 有符号数的表示方法
第31章 字节序
第32章 内存布局
第33章 CPU
第34章 哈希函数
第三部分 一些高级的例子
第35章 温度转换
第36章 斐波拉契数列
第37章 CRC32计算的例子
第38章 网络地址计算实例
第39章 循环:几个迭代
第40章 达夫装置
第41章 除以9
第42章 字符串转换成数字,函数atoi()
第43章 内联函数
第44章 C99标准的受限指针
第45章 打造无分支的abs()函数
第46章 变长参数函数
第47章 字符串剪切
第48章 toupper()函数
第49章 不正确的反汇编代码
第50章 混淆技术
第51章 C++
第52章 数组与负数索引
第53章 16位的Windows程序
第四部分 Java
第54章 Java
第五部分 在代码中发现重要而有趣的内容
第55章 编译器产生的文件特征
第56章 Win32环境下与外部通信
第57章 字符串
第58章 调用宏assert()(中文称为断言)
第59章 常数
第60章 检索关键指令
第61章 可疑的代码模型
第62章 魔数与程序调试
第63章 其他的事情
第六部分 操作系统相关
第64章 参数的传递方法(调用规范)
第65章 线程本地存储TLS
第66章 系统调用(syscall-s)
第67章 Linux
第68章 Windows NT
第七部分 常用工具
第69章 反汇编工具
第70章 调试工具
第71章 系统调用的跟踪工具
第72章 反编译工具
第73章 其他工具
第八部分 更多范例
第74章 修改任务管理器(Vista)
第75章 修改彩球游戏
第76章 扫雷(Windows XP)
第77章 人工反编译与Z3 SMT求解法
第78章 加密狗
第79章 “QR9”:魔方态加密模型
第80章 SAP
第81章 Oracle RDBMS
第82章 汇编指令与屏显字符
第83章 实例演示
第九部分 文件分析
第84章 基于XOR的文件加密
第85章 Millenium游戏的存档文件
第86章 Oracle的.SYM文件
第87章 Oracle的.MSDB文件
第十部分 其他
第88章 npad
第89章 修改可执行文件
第90章 编译器内部函数
第91章 编译器的智能短板
第92章 OpenMP
第93章 安腾指令
第94章 8086的寻址方式
第95章 基本块重排
第十一部分 推荐阅读
第96章 参考书籍
第97章 博客
第98章 其他内容
第十二部分 练习题
第99章 初等难度练习题
第100章 中等难度练习题
第101章 高难度练习题
第102章 Crackme/Keygenme
附录A x86
附录B ARM
附录C MIPS
附录D 部分GCC库函数
附录E 部分MSVC库函数
附录F 速查表
附录G 练习题答案
参考文献
· · · · · · (收起)
读后感
用户评价
作为一名在软件安全领域摸爬滚打多年的技术爱好者,我始终对那些能够深入剖析事物本质、揭示隐藏机制的书籍抱有极大的热情。《逆向工程权威指南》这个名字本身就充满了吸引力,它承诺了一个全面、深入的探索之旅,足以勾起任何对底层技术、对软件内部工作原理充满好奇心的人的求知欲。拿到这本书的时候,我便迫不及待地翻开了第一页,心中充满了期待,希望能在这本书中找到解答我长期以来在安全研究中遇到的各种疑惑的钥匙,并且能够系统地学习到从基础到高深的逆向工程方法论。
最令我感到振奋的是,这本书的实践导向性非常强。书中提供了大量的练习题和实战案例,让我能够将所学的理论知识立即应用于实践。从分析简单的Windows程序到挑战复杂的Linux二进制文件,每一个练习都设计得恰到好处,既能巩固基础,又能逐步提升难度。通过这些实操,我不仅熟练掌握了各种工具的使用,更重要的是,我学会了如何独立思考,如何分析和解决那些未知的、复杂的逆向工程问题。
总而言之,《逆向工程权威指南》是一本在我学习逆向工程的道路上,扮演了极其重要角色的书籍。它以其系统性的知识体系、深入浅出的讲解方式、丰富的实战案例,以及前瞻性的视野,成功地将一个复杂而迷人的领域展现在我面前。它不仅仅是一本技术书籍,更像是一位经验丰富的导师,在我遇到困惑时给予指引,在我感到迷茫时提供方向。这本书让我对逆向工程的理解提升到了一个新的高度,也让我对未来在安全领域的探索充满了信心和动力。
这本书在讲解调试技巧方面,也达到了前所未有的深度。书中不仅介绍了x64dbg、gdb等主流调试器的基本用法,更重要的是,它深入剖析了断点设置的各种高级技巧,条件断点、内存断点、硬件断点的应用场景,以及如何有效地利用内存查看、寄存器查看和反汇编窗口来追踪程序的执行流程。尤其是书中关于如何分析复杂函数调用栈、如何定位异常源头以及如何进行内存覆盖和修改的章节,让我受益匪浅,这些都是在实际安全攻防中至关重要的技能。
我特别欣赏作者在讲解复杂概念时的耐心和细致。例如,在介绍二进制文件的结构时,书中通过大量的图示和生动的比喻,将那些原本枯燥的elf、pe等文件格式剖析得淋漓尽致,让我这个在二进制世界里摸爬滚打了多年的老兵,也仿佛第一次真正“看懂”了文件的骨架。书中对于各种常用反编译工具的介绍,也远不止于简单的功能罗列,而是深入到每个工具的设计理念、优缺点以及在不同场景下的最佳实践,这使得我在学习过程中能够选择最适合自己的工具,并能灵活运用。
这本书在讲解软件漏洞挖掘和利用方面,也为我打开了新的大门。它不仅仅是教会我如何“看懂”代码,更是教我如何“找到”代码中的弱点。从缓冲区溢出、格式化字符串漏洞到逻辑漏洞,书中都提供了非常清晰的案例分析,并且详细讲解了如何利用这些漏洞来控制程序的执行流程,甚至实现代码执行。这部分内容对于我理解软件安全攻防的本质,以及如何更有效地进行安全测试,提供了极其宝贵的经验。
在我看来,一本真正优秀的“权威指南”,绝不能止步于对现有工具和技术的介绍,而应该引领读者去思考更深层次的问题。《逆向工程权威指南》正是这样的一本书。它在讲解了各种逆向工程技术的同时,也鼓励读者去思考如何改进现有工具,如何创造新的分析方法,以及如何在不断变化的软件生态中保持敏锐的洞察力。书中对一些前沿的逆向工程研究方向的提及,让我对未来的学习和探索充满了期待,它让我意识到,逆向工程本身也在不断进化,而学习,永无止境。
内存分析部分是我非常看重的一块内容,因为很多时候,隐藏在程序运行时的秘密就藏在内存之中。《逆向工程权威指南》在这方面做得尤为出色。它详细介绍了内存布局、堆栈、堆的管理机制,以及如何在程序运行时对内存进行dump和分析。书中对于各种内存损坏、内存泄漏的定位方法,以及如何利用内存检查工具来发现潜在的安全漏洞,都提供了详实的指导。我甚至学会了如何通过分析进程的内存来理解其运行状态,这对于很多无法直接通过代码分析来解决的问题,提供了绝佳的解决方案。
书中对汇编语言的讲解,可以说是点睛之笔。很多时候,学习逆向工程的瓶颈就在于对汇编语言的理解不够透彻,而《逆向工程权威指南》则提供了一个非常系统且易于理解的学习路径。它从最基础的指令集开始,逐步深入到各种寻址模式、函数调用约定以及指令的执行流程。最重要的是,作者并没有止步于理论知识的灌输,而是通过大量的实例,将汇编指令与实际的程序逻辑联系起来,让我能够真正理解一段汇编代码是如何转化为可执行的程序,并且能够清晰地看到指令之间的相互作用。
这本书的内容编排实在是太令人印象深刻了。它并没有一开始就抛出晦涩难懂的汇编代码或者复杂的反编译工具使用方法,而是从一个非常宏观的视角切入,详细阐述了逆向工程在现代科技发展中的重要地位,以及它所涉及到的各个领域,从软件安全、漏洞挖掘到芯片设计、固件分析,无不涵盖其中。这种宏观的铺垫,让我能够清晰地理解逆向工程的价值所在,也为后续深入的学习打下了坚实的基础。它不仅仅是一本技术手册,更是一本能够激发你对整个信息技术产业产生更深层次思考的启迪之作,我尤其喜欢它对逆向工程伦理和社会责任的探讨,这在同类书籍中是难得一见的。
作者经验,热心程度,五星
说实在吧,这本书名气我也听过,不过当拿到中文翻译版,大致浏览后,感觉内容质量没想象中好,感觉内容前半部分还好点,后半部分主题不明确,基本是想到哪写到哪,不过这也确实是博文整合而来的,就感觉内容上不如《逆向工程核心原理》!
作者经验,热心程度,五星
● 了解逆向工程的权威指南 ● 初学者必备的大百科全书 ● 安天网络安全工程师培训必读书目
这本书本身是不错的,但是中文版真是不敢恭维。。中文预售的时候我就订了,结果到了一看,删减多,翻译不通,印刷错误也不少、看着很头疼,本来这书是给初学者看的,这样一看把错的给记进去了