0. 感谢先行者
可以跳过不看
致敬先行者们,是你们的努力探索让我们现在有这么多的好东西用。尤其是IDA和Ghidra这两个工具,让我们有可用的好工具。
感谢那些无私开源奉献的人们。
感谢奠基者
Ilfak Guilfanov和他的IDA工具,199X年至今,历经30年余的不懈努力,逆向工程界的软件标杆
https://www.freebuf.com/sectool/275446.html
可惜他输出的文章少了一点,最近的一次在2018年的black-hat描述了中间语言的结构。
Cifuentes, C 博士论文以及对应的DCC反编译工具,奠定了反编译工具的整体流程• Reverse Compilation Techniques
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
庞建民老师:《编译与反编译技术》
张平老师:《反编译技术》
Last updated