什么是逆向工程?

正向设计是从构思到产品。逆向工程则相反:对着已经存在的程序,反推出数据结构、体系结构和设计意图。工业里船体放样就是早期实例;软件里则是通过反汇编阅读,研究实现方法。
目的是学习和研究先进技术,尤其当手头没有文档、却必须弄清某个功能如何落地的时候。
为什么学习逆向工程?

2007 年起国内法律承认了以学习研究为目的的逆向。只停留在别人搭好的 IDE 平台上,技术方向永远被别人牵引。
掌握分析方法,就能直接从一流软件里取长补短。院校对此重视不够,市面实训又以培养软件蓝领为主,这条路仍然稀缺。
怎么学习逆向工程?

综合性、实践性都很强,尤其需要耐心。一上来就拆成熟软件,很容易被海量指令劝退。
从自己写的 Hello World 汇编开始,逐步升级到 C/C++ 流程特性。勤做笔记、总结方法,几个月后任何软件都会失去神秘感。