onethawt/reverseengineering-reading-list

GitHub: onethawt/reverseengineering-reading-list

一份系统整理的逆向工程学习资源清单,涵盖主流工具、经典书籍、论文与按平台分类的专题教程。

Stars: 2667 | Forks: 347

# 逆向工程阅读列表 如果任何链接失效,并且您无法在 [archive.org](http://archive.org) 上找到它们,请[联系我](http://one.thawt.io/contact/),我可以为您提供该文档的副本。 ## 软件与库 * [IDA Pro](https://www.hex-rays.com/products/ida/):**王者** IDA 是一款适用于 Windows、Linux 或 Mac OS X 的多处理器反汇编器和调试器,它提供了极为丰富的功能,甚至难以一一道尽。 * [Ghidra](https://github.com/NationalSecurityAgency/ghidra):Ghidra 是由美国国家安全局研究局创建和维护的软件逆向工程 (SRE) 框架。该框架包含一套功能齐全的高端软件分析工具,使用户能够分析各种平台(包括 Windows、Mac OS 和 Linux)上的编译代码。功能包括反汇编、汇编、反编译、图形化和脚本编写,以及数百种其他功能。Ghidra 支持多种处理器指令集和可执行格式,并且可以在用户交互和自动化模式下运行。用户还可以使用 Java 或 Python 开发自己的 Ghidra 插件组件和/或脚本。 * [Binary Ninja](https://binary.ninja/):一个逆向工程平台。它专注于简洁易用的界面,并建立在自定义中间语言 (IL) 上的强大多线程分析,能够快速适应各种架构、平台和编译器。 * [Capstone](http://www.capstone-engine.org/):Capstone 是一个轻量级的多平台、多架构反汇编框架。我们的目标是使 Capstone 成为安全社区中用于二进制分析和逆向的终极反汇编引擎。 * [Hopper](https://www.hopperapp.com/):Hopper 是一款适用于 OS X 和 Linux 的逆向工程工具,可让您对 32/64 位 Intel Mac、Linux、Windows 和 iOS 可执行文件进行反汇编和反编译!基于 capstone,支持脚本编写。 * [PeachPy](https://github.com/Maratyszcza/PeachPy):使用高层 Python 编写的便携且高效的汇编代码生成器。 * [Radare2](http://www.radare.org/):用于反汇编、调试、取证等的便携式逆向工程框架。基于 capstone,支持脚本编写。 * [x64dbg](http://x64dbg.com/):开源的 x64/x32 Windows 调试器。Olly 的继承者。 * [re_lab](https://github.com/cboin/re_lab):使用 docker 的便携式逆向工程环境。 ## Android * [Android 逆向工程攻防](https://github.com/rednaga/training/tree/master/DEFCON23) ## 汇编 / 反汇编 * [分析罕见固件](http://blog.ptsecurity.com/2015/07/best-reverser-write-up-analyzing.html) * [ARM v7 反汇编](https://drive.google.com/file/d/0B0l-Qo3D3sAoMEhkcFBFVzRiNEk/view) * [UROBOROS - 反汇编与重组](https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/wang-shuai) - 一款可以将可执行文件反汇编到某种程度的工具,使得生成的代码无需人工干预即可重新组装回可正常工作的二进制文件。 ## 基础知识 * [逆向工程 101 演讲演示](https://vimeo.com/6764570) * [逆向工程 101 - NYU: Poly 2010](https://prezi.com/a5tm-lf0879-/reverse-engineering-101-nyupoly-2010/):Aaron Portnoy 和 Peter Silberman 于 2010 年 10 月 4 日在 NYU:Poly 进行的逆向工程入门介绍。 * [逆向工程 102 - NYU: Poly 2010](https://prezi.com/e5a2tumdqocj/reverse-engineering-102-nyupoly-2010/):Aaron Portnoy 和 Peter Silberman 于 2010 年 10 月 11 日在 NYU:Poly 进行的逆向工程入门介绍(第 2 天)。 * [CTF 实地指南](https://trailofbits.github.io/ctf/) ### 书籍 * [现代 X86 汇编语言编程:32 位、64 位、SSE 和 AVX](https://www.amazon.com/Modern-X86-Assembly-Language-Programming/dp/1484200659):x86 汇编语言编程基础。它侧重于与应用软件开发最密切相关的 x86 指令集方面。 * [恶意代码分析实战](https://www.amazon.com/Practical-Malware-Analysis-Hands-Dissecting/dp/1593272901):《恶意代码分析实战》将教授您专业分析师使用的工具和技术。以本书为指南,您将能够安全地分析、调试和反汇编遇到的任何恶意软件。 * [实用逆向工程](https://www.amazon.com/Practical-Reverse-Engineering-Reversing-Obfuscation/dp/1118787315):本书涵盖 x86、x64 和 ARM(第一本涵盖这三者的书籍);Windows 内核模式代码 rootkit 和驱动程序;虚拟机保护技术;以及更多内容。最重要的是,它提供了一种系统的方法来讲解这些材料,并包含大量动手练习和真实世界的示例。 * [解密:逆向工程的秘密](https://www.amazon.com/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817):本书以逆向工程的基础入门(包括计算机内部结构、操作系统和汇编语言)开篇,然后讨论逆向工程的各种应用,为读者提供了用于软件逆向工程的实用且深入的技术。 * [逆向工程入门](https://beginners.re/):这本电子书提供英语和俄语版本,是初学者的良好入门读物。涉及的主题众多:Oracle RDBMS、Itanium、加密狗、LD_PRELOAD、堆栈溢出、ELF、win32 PE 文件格式、x86-64、临界区、系统调用、TLS、位置无关代码 (PIC)、配置文件引导优化、C++ STL、OpenMP、win32 SEH。 * [IDA Pro 书:全球最受欢迎反汇编器的非官方指南](https://www.amazon.com/IDA-Pro-Book-Unofficial-Disassembler/dp/1593272898):被 IDA Pro 的创造者誉为“意义深远、全面且准确”的《IDA Pro 书》第二版涵盖了从最初步的操作到高级自动化技术的所有内容。 ## 数据结构 * [从二进制执行中自动逆向工程数据结构](https://www.isoc.org/isoc/conferences/ndss/10/pdf/23.pdf) [PDF] * [挖掘数据结构](http://ben.ransford.org/srg/papers/cozzie--digging.pdf) [PDF] * [Howard:用于逆向工程数据结构的动态挖掘器](http://www.isoc.org/isoc/conferences/ndss/11/pdf/5_1.pdf) [PDF] * [MemPick:C/C++ 二进制文件中的高级数据结构检测](http://www.cs.vu.nl/~herbertb/papers/mempick_wcre13.pdf) [PDF] * [TIE:二进制程序中类型的原则性逆向工程](https://reverse.put.as/wp-content/uploads/2011/06/D1T2-Mark-Dowd-Tarjei-Mandt-iOS6-Security.pdf) [PDF] ## 漏洞利用 * [自动化漏洞发现技术](http://www.crisalis-project.eu/sites/crisalis-project.eu/files/crisalis_deliverable-D5.3.pdf) [PDF] * [破解 Megamos Crypto:无线撬开汽车防盗器](https://www.usenix.org/sites/default/files/sec15_supplement.pdf) [PDF] * [用于程序数据内省和修改的内存图方法](http://software.imdea.org/~juanca/papers/sigpath_esorics14.pdf) [PDF] * [对未改装乘用车的远程漏洞利用](http://illmatics.com/Remote%20Car%20Hacking.pdf) [PDF] ## 指令集 * [Intel® 64 和 IA-32 架构软件开发者手册](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html):这些手册描述了 Intel® 64 和 IA-32 架构的架构和编程环境。 * [X86 操作码和指令参考](http://ref.x86asm.net/):本参考旨在提供精确的操作码和指令集参考(包括 x86-64)。其主要目的是精确定义指令参数和属性。 * [JSON x86-64 Intel 指令集](https://github.com/astocko/json-x86-64):以机器可读的 JSON 格式呈现的完整 x86-64 Intel 指令集(包含至 AVX-512)。 * [X86-64 参考](http://www.felixcloutier.com/x86/):源自 2014 年 9 月版《Intel® 64 和 IA-32 架构软件开发者手册》的第 2A 和 2B 卷。**使用 [PDF 挖掘](https://github.com/zneak/x86doc) 从官方 Intel 文档生成参考。** ## Mac 和 iOS * [iOS App 逆向工程](https://github.com/iosre/iOSAppReverseEngineering):《iOS App 逆向工程》是世界上第一本非常详细地介绍 iOS App 逆向工程技能的书籍 * [iOS 内核安全](https://reverse.put.as/wp-content/uploads/2011/06/D1T2-Mark-Dowd-Tarjei-Mandt-iOS6-Security.pdf) [PDF] * [越狱技术](https://reverse.put.as/wp-content/uploads/2011/06/pod2g-jailbreak-techniques-wwjc-2012.pdf) [PDF] * [逆向 iOS App:一种实用的方法](https://s3.amazonaws.com/s3.synack.com/T2_reversingIOSApps.pdf) [PDF] ## 恶意代码分析 [请参阅附加文档](malwareanalysis.md) ## 网络 [从网络踪迹逆向工程协议](http://www.di.fc.ul.pt/~nuno/PAPERS/WCRE11.pdf) [PDF] ## 混淆与反混淆 * [通过 AST 和部分评估进行高级 JS 反混淆](http://blog.mindedsecurity.com/2015/10/advanced-js-deobfuscation-via-ast-and.html) ## 研究工具 * [用于逆向工程的遗传编程](https://www.cs.virginia.edu/~weimer/p/weimer-wcre2013-re-preprint.pdf) * [汇编指令的 IR 转换合成](https://speakerdeck.com/snf/ir-transformation-synthesis-for-assembly-instructions) ## 脱壳 * [脱壳的艺术](https://www.blackhat.com/presentations/bh-usa-07/Yason/Whitepaper/bh-usa-07-yason-WP.pdf) [PDF] ## Windows ### 驱动程序签名强制 * [击败 Windows 驱动程序签名强制 #1:默认驱动程序](http://j00ru.vexillium.org/?p=1169) * [击败 Windows 驱动程序签名强制 #2:CSRSS 和线程桌面](http://j00ru.vexillium.org/?p=1393) * [击败 Windows 驱动程序签名强制 #3:终极邂逅](http://j00ru.vexillium.org/?p=1455) * [DSEFix - 击败 x64 驱动程序签名强制:利用易受攻击的签名驱动程序 - VirtualBox 驱动程序](http://www.kernelmode.info/forum/viewtopic.php?t=3322&f=11) ### 其他 * [HyperV 和 vmbus 内部原理](https://speakerdeck.com/snf/ir-transformation-synthesis-for-assembly-instructions) ### Patch Guard * [在 Windows x64 上绕过 PatchGuard](http://www.uninformed.org/?v=3&a=3&t=txt) * [禁用 PatchGuard Vista 和 Windows 7](http://fyyre.ivory-tower.de/projects/bootloader.txt) * [禁用 PatchGuard Windows 8 和 Windows 10](http://fyyre.ivory-tower.de/projects/bootloader_v2.txt) * [通用 PatchGuard 和驱动程序签名强制禁用](https://github.com/hfiref0x/UPGDSED) ### Win32 * [PInvoke.net](http://www.pinvoke.net/):PInvoke.net 主要是一个 wiki,允许开发者查找、编辑和添加 PInvoke* 签名、用户定义类型,以及与从托管代码(用 C# 或 VB.NET 等语言编写)调用 Win32 和其他非托管 API 相关的任何其他信息。
标签:Assetfinder, Binary Ninja, Capstone, Ghidra, Hopper, IDA Pro, JS文件枚举, meg, PeachPy, TLS抓取, URL提取, VPS部署, Wayback Machine, 书籍列表, 二进制分析, 二进制安全, 云安全运维, 云资产清单, 信息安全, 反汇编, 反编译, 学习资源, 工具集合, 网络安全, 论文合集, 请求拦截, 资源汇总, 软件分析, 软件安全, 逆向工具, 逆向工程, 隐私保护