我院陆一飞老师在程序反编译方面取得新进展

发布日期:2024-05-09 浏览次数:


程序反编译是程序编译的逆向过程,是一种将可执行文件转换回源代码的关键技术,是软件逆向工程领域的核心概念之一。在编译过程中,具有复杂语法特性的源代码被转化为二进制机器码或字节码,这些代码的语法特性在编译过程中被简化。而反编译的任务是逐步恢复源代码中的语法特性。然而,由于在编译过程中部分语法特性信息的丢失,反编译通常需要使用大量启发式规则进行不断尝试,这个过程容易出现错误。这类错误轻则加大分析人员对闭源软件程序语义的理解难度,重则可能引发程序的理解歧义,导致分析人员对应用程序中的关键逻辑,如潜在漏洞与恶意行为的误判。因此,确保程序反编译的正确性至关重要。


我院陆一飞老师与课题组老师同学合作,对Java反编译技术进行了完整而系统的研究,并提出了以差分测试为基础的Java反编译技术测试框架(见图1),旨在确保Java反编译的正确性。该框架结合当前Java编译测试取得的最新成果,采用编译-反编译-再编译-执行的测试手段比较源代码与反编译代码之间的语法正确性与语义一致性。框架已在Java三大知名反编译工具(包含Intellij内置反编译工具FernFlower)上取得效果,证明了该差分测试方法在反编译正确性保障上的可用性。


上述研究工作推进了程序逆向领域的发展,对闭源应用软件的漏洞检测与恶意行为检测等研究提供了支持。目前该研究成果已被软件工程与程序语言学科国际顶级会议OOPSLA(Conference on Object-Oriented Programming Systems, Languages, and Applications,CCF-A会议)录用,论文标题为"Understanding and Finding Java Decompiler Bugs"。



图1 研究方法JD-Tester概览


陆一飞老师长期研究面向可信软件的测试与分析技术,安卓应用为其当前的主要研究主体,程序反编译与混淆等在内的程序逆向研究也是其主要研究方向。近年来,已在OOPSLA、TOSEM、ISSTA、FSE、ASE以及ICSE等软件工程与程序语言国际顶级期刊上发表多篇优秀论文。欢迎对程序动静态分析以及程序逆向相关领域感兴趣的2024硕士研究生与2025级推免硕士研究生同学联系,一同探讨,共同进步!(详见学院官网:https://software.nju.edu.cn/lyf/index.html