表格 | 第6-7页 |
插图 | 第7-9页 |
摘要 | 第9-12页 |
Abstract | 第12-14页 |
1 绪论 | 第15-31页 |
1.1 Java语言背景 | 第15-19页 |
1.1.1 Java语言特征 | 第17-18页 |
1.1.2 Java语言程序的运用场景 | 第18-19页 |
1.2 Java语言程序漏洞检测与诊断的重要性 | 第19-20页 |
1.3 相关研究 | 第20-27页 |
1.3.1 软件功能性漏洞 | 第20-25页 |
1.3.2 程序安全漏洞 | 第25-27页 |
1.4 本文主要贡献 | 第27-30页 |
1.4.1 之前研究工作的不足 | 第27-28页 |
1.4.2 本文的主要贡献 | 第28-30页 |
1.5 本文结构安排 | 第30-31页 |
2 基于确定行重现技术的程序漏洞诊断技术 | 第31-64页 |
2.1 引言 | 第31-32页 |
2.2 背景知识与相关工作 | 第32-36页 |
2.2.1 并发程序测试和漏洞诊断过程 | 第32-33页 |
2.2.2 确定性重现系统 | 第33-34页 |
2.2.3 基于依赖的重现 | 第34-35页 |
2.2.4 现有系统的限制 | 第35-36页 |
2.3 Java运行时行为 | 第36-39页 |
2.3.1 环境配置及测试用例 | 第36-37页 |
2.3.2 观测结果1:垃圾回收引起的依赖 | 第37-38页 |
2.3.3 观测结果2:交叉对象访问(Interleaving of Object Accesses) | 第38-39页 |
2.4 以对象为中心的确定性重现 | 第39-55页 |
2.4.1 为何要以对象为中心? | 第40页 |
2.4.2 记录共享数据访问 | 第40-41页 |
2.4.3 元数据 | 第41-42页 |
2.4.4 记录对象访问的时间轴(Timelines) | 第42-44页 |
2.4.5 重现对象访问的时间轴 | 第44-47页 |
2.4.6 记录Java虚拟机中的其他不确定事件 | 第47-49页 |
2.4.7 优化时间轴记录 | 第49-54页 |
2.4.7.1 ORDER的优化空间 | 第49-51页 |
2.4.7.2 删除不必要的时间轴记录 | 第51-53页 |
2.4.7.3 日志压缩 | 第53-54页 |
2.4.8 讨论 | 第54-55页 |
2.5 ORDER实现细节 | 第55-57页 |
2.5.1 修改Harmony编译流水线 | 第55页 |
2.5.2 在Harmony中记录垃圾回收事件 | 第55-56页 |
2.5.3 与Java虚拟机本地代码交互 | 第56-57页 |
2.6 评测结果 | 第57-63页 |
2.6.1 记录阶段的性能开销 | 第57-60页 |
2.6.2 熏现阶段的性能开销 | 第60-61页 |
2.6.3 日志的大小 | 第61-62页 |
2.6.4 重现并发程序错误 | 第62-63页 |
2.7 小结 | 第63-64页 |
3 基于符号执行的程序漏洞检测技术 | 第64-85页 |
3.1 引言 | 第64页 |
3.2 背景知识 | 第64-71页 |
3.2.1 符号化执行简介 | 第64-67页 |
3.2.2 图形界面程序的符号化执行 | 第67-68页 |
3.2.3 安卓编程和执行模型 | 第68-71页 |
3.3 导向性符号化执行 | 第71-80页 |
3.3.1 一个简单的例子 | 第71-73页 |
3.3.2 整体架构 | 第73-74页 |
3.3.3 提取导引信息 | 第74-79页 |
3.3.4 将指引信息用于符号化执行 | 第79-80页 |
3.4 SymDroid系统实现细节 | 第80-81页 |
3.4.1 SymDroid原型系统 | 第80-81页 |
3.4.2 处理安卓系统中的并发操作 | 第81页 |
3.5 SymDroid系统评测 | 第81-84页 |
3.5.1 导向性符号化执行技术的有效性 | 第82-84页 |
3.6 小结 | 第84-85页 |
4 基于导向性符号化执行的信息泄露检测诊断技术 | 第85-105页 |
4.1 引言 | 第85-86页 |
4.2 背景知识 | 第86-88页 |
4.2.1 静态信息泄露检测 | 第86-88页 |
4.3 LeakMiner系统整体架构 | 第88-89页 |
4.4 LeakMiner信息泄露检测 | 第89-101页 |
4.4.1 安卓系统中的隐私信息 | 第89-90页 |
4.4.2 函数调用图构建和指针分析 | 第90-96页 |
4.4.3 寻找信息泄露路径:程序切片和敏感信息传播 | 第96-99页 |
4.4.4 处理特殊信息传播途径 | 第99-101页 |
4.5 评测结果 | 第101-104页 |
4.5.1 精度 | 第101-103页 |
4.5.2 分析时间 | 第103-104页 |
4.6 小结 | 第104-105页 |
5 总结与展望 | 第105-109页 |
5.1 工作总结 | 第105-106页 |
5.2 工作展望 | 第106-109页 |
5.2.1 面向Java应用的检测技术 | 第106-107页 |
5.2.2 确定性重现研究 | 第107页 |
5.2.3 符号化执行研究 | 第107页 |
5.2.4 其他动态语言的相关研究 | 第107-109页 |
参考文献 | 第109-119页 |
发表文章目录 | 第119-120页 |
致谢 | 第120-121页 |