基于中间语言的JNI内存泄露检查
JNI技术支持Java与本地C/C++的相互调用,在Android等混合语言实现的系统中有着广泛应用,但语言之间的安全特性差异,使其成为安全薄弱环节,现有的分析方法难以处理多语言相互调用产生的安全缺陷。本文以JNI调用中易产生的内存泄漏为例,开展Java/C++ JNI跨语言分析的研究。采用扩展的Java Bytecode(Bytecode*)指令作为C++语义的解释,来消除跨语言分析的障碍。围绕JNI调用中内存泄漏的问题,本文做了以下三方面工作:1)定义兼容Java和C++语言的分块内存模型;2)基于LLVM/LLJVM,设计实现了C++到Bytecode*的翻译策略;3)建立方法调用图,提取方法摘要,利用过程间分析方法检测JNI调用中的内存泄露。针对具有典型内存泄露特征的JNI实例翻译检测表明,本文工作能够准确检测出Java/C++混合语言中的内存泄露,对于JNI混合语言编程的理解和漏洞分析具有重要价值。
JNI编程技术 内存泄漏 跨语言分析 中间语言 语义扩展
蒋挺宇 王鹏 杨述 董渊 王生原 褥震
清华大学 计算机科学与技术系 北京市 100084
国内会议
天津
中文
1-9
2013-11-08(万方平台首次上网日期,不代表论文的发表时间)