跳转至

软件逆向工程简介

定义

指对软件的结构,流程,算法,代码等进行逆向拆解和分析。

研究目标

导出软件产品的源代码,设计原理,结构,算法,处理过程,运行方法及相关文档等。

应用领域

主要应用于软件维护,软件破解,漏洞挖掘,恶意代码分析。

逆向分析流

  1. 研究保护方法,去除保护功能
  2. 反汇编目标软件,跟踪,分析代码功能
  3. 生成目标软件的设计思想,架构,算法等相关文档
  4. 注入代码,开发出更完善的应用软件

软件逆向的历史

20 世纪 60 年代

为挽救第二代计算机软件及加速第三代计算机软件开发,美国研制专用反编译工具进行软件移植。

1993 年

Chikofs 等人于发起逆向工程会议并每年举行一次,研究和讨论软件逆向工程的问题,技术及其支持工具。

80 年代后期到 90 年代

关于解决软件逆向工程和软件版权的矛盾基本上有了结果,各国纷纷针对软件逆向工程进行立法,不是约束而是规范该领域的研究工作。

2007 年 1 月 17 日

最高人民法院发布司法解释:通过自行开发研制或者反向工程等方式获得的商业秘密,将不被认定为反不正当竞争法有关条款规定的侵犯商业秘密行为。

逆向研究的目的和意义

  • 充分利用和改造现有软件,对现有软件进行再设计,再工程,使软件功能得到大幅提高以满足用户的需要
  • 通过软件逆向工程将过时的软件系统转化为易演化系统
  • 破除商业闭源,技术保护(这阻碍了软件科学的发展),开放源代码

CTF竞赛中的逆向

涉及 Windows、Linux、Android 平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握 Android 移动应用APK文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术。 ------ 《全国大学生信息安全竞赛参赛指南》

要求

  • 熟悉如操作系统,汇编语言,加解密等相关知识
  • 具有丰富的多种高级语言的编程经验
  • 熟悉多种编译器的编译原理
  • 较强的程序理解和逆向分析能力