# 0. 感谢先行者

### 本章**可跳过！！！**

致敬先行者们，是你们的努力探索让我们现在有这么多的好东西用。尤其是IDA和Ghidra这两个工具，让我们有可用的好工具。

感谢那些无私开源奉献的人们。

## 感谢奠基者

Ilfak Guilfanov和他的IDA工具，199X年至今，历经30年余的不懈努力，逆向工程界的软件标杆

<https://www.freebuf.com/sectool/275446.html>

可惜他输出的文章少了一点，最近的一次在2018年的black-hat描述了中间语言的结构。

Cifuentes, C 博士论文以及对应的DCC反编译工具，奠定了反编译工具的整体流程• [Reverse Compilation Techniques](http://www.phatcode.net/res/228/files/decompilation_thesis.pdf)

Mike Van Emmerik的博士论文《Static Single Assignment for Decompilation》奠定了 SSA 在反编译领域的基石，尤其在类型恢复中，他参与的Boomerang也很不错（虽然现在已经不再维护了）

University of Queensland Binary Translator (UQBT) 作者”Cifuentes, C 和 Mike Van Emmerik”

虽然这个工具的设计不是用于反编译。它也是Ghidra工具后端Sleigh的前身，也是后续反编译理论的技术底座

<https://github.com/osfree-project/uqbt>

感谢Ghidra和sleigh的开源，从199X年到现在，不可思议，它出现时就走在正确的道路上，最开始使用SSA形态的中间语言，配合架构描述性语言(SLED)来适配多指令集。感谢它的开源，让我不必再混沌中摸索，如同启明星，有时候不知道怎么做那就看一下Ghidra的源码吧（Ghidra能不能把你那破UI修一修啊）

《No More Gotos》 **Khaled Yakdan** 博士论文 《A Human-Centric Approach For Binary Code Decompilatio》构建了Dream++反编译器从理论上证明不依赖于规则基于stucter恢复后可以将控制流还原成无Goto的形态。

《TIE》Principled Reverse Engineering of Types in Binary Programs. 整理并归纳了基于格理论+上下限约束推导的逆向类型推断系统。

## 感谢国内老师的课程和教材

非常感谢南京大学的谭添、李樾两位老师的《软件分析》课程： <https://github.com/pascal-lab/Tai-e-assignments>

庞建民老师：《编译与反编译技术》

张平老师：《反编译技术》
