| 摘要 | 第5-7页 |
| ABSTRACT | 第7-9页 |
| 第1章 绪论 | 第18-30页 |
| 1.1 研究背景 | 第18-22页 |
| 1.1.1 逆向工程 | 第18-19页 |
| 1.1.2 针对固件安全的逆向工程 | 第19-21页 |
| 1.1.3 固件装载基址定位的意义 | 第21-22页 |
| 1.2 国内外研究现状及发展趋势 | 第22-27页 |
| 1.2.1 固件逆向工程的关键步骤 | 第22-24页 |
| 1.2.2 固件的校验及分析 | 第24-26页 |
| 1.2.3 人工定位固件装载基址的方法 | 第26-27页 |
| 1.3 本文的主要研究内容 | 第27-28页 |
| 1.4 论文的组织结构 | 第28-30页 |
| 第2章 装载基址定位相关技术 | 第30-46页 |
| 2.1 文件装载的基本概念 | 第30页 |
| 2.2 本文相关的ARM指令 | 第30-40页 |
| 2.2.1 函数序言常见指令 | 第30-33页 |
| 2.2.2 ARM处理器状态切换指令BX | 第33-34页 |
| 2.2.3 MOV指令的立即数限制 | 第34-35页 |
| 2.2.4 LDR指令对字符串地址加载 | 第35-38页 |
| 2.2.5 ADR指令对字符串的引用 | 第38-40页 |
| 2.3 固件装载基址的人工定位方法 | 第40-42页 |
| 2.3.1 基于跳转表定位装载基址 | 第40-41页 |
| 2.3.2 基于指令中立即数定位装载基址 | 第41-42页 |
| 2.3.3 定位装载基址的其他方法 | 第42页 |
| 2.4 本文中用到的工具软件 | 第42-45页 |
| 2.4.1 固件解压工具 | 第43页 |
| 2.4.2 反汇编工具 | 第43-45页 |
| 2.4.3 二进制文件查看工具 | 第45页 |
| 2.5 本章小结 | 第45-46页 |
| 第3章 基于函数入口表的装载基址定位 | 第46-65页 |
| 3.1 引言 | 第46页 |
| 3.2 函数入口表的识别 | 第46-53页 |
| 3.2.1 函数入口表的产生及其规律 | 第46-48页 |
| 3.2.2 函数入口表识别算法FIND-FET | 第48-51页 |
| 3.2.3 函数入口表误判分析 | 第51-53页 |
| 3.3 利用函数入口表定位装载基址 | 第53-57页 |
| 3.3.1 ARM平台下二进制函数指令规律 | 第53-54页 |
| 3.3.2 DBMFET算法 | 第54-57页 |
| 3.4 实验结果与分析 | 第57-63页 |
| 3.4.1 识别函数入口表的实验结果 | 第57-58页 |
| 3.4.2 定位装载基址的实验结果及分析 | 第58-62页 |
| 3.4.3 0xB5陷阱及解决方法 | 第62-63页 |
| 3.5 本章小结 | 第63-65页 |
| 第4章 基于字符串地址集合的装载基址定位 | 第65-77页 |
| 4.1 引言 | 第65页 |
| 4.2 固件中的字符串及其地址识别 | 第65-70页 |
| 4.2.1 固件中的字符串及其识别算法 | 第65-68页 |
| 4.2.2 字符串地址的识别 | 第68-70页 |
| 4.3 利用字符串地址匹配定位装载基址 | 第70-73页 |
| 4.4 实验结果与分析 | 第73-75页 |
| 4.4.1 字符串和LDR指令中地址识别实验结果 | 第73-74页 |
| 4.4.2 定位装载基址的实验结果及分析 | 第74-75页 |
| 4.5 本章小结 | 第75-77页 |
| 第5章 基于文字池匹配的装载基址定位 | 第77-90页 |
| 5.1 引言 | 第77页 |
| 5.2 字符串和文字池识别 | 第77-82页 |
| 5.2.1 固件中的字符串 | 第77-79页 |
| 5.2.2 文字池的识别 | 第79-82页 |
| 5.3 利用文字池匹配定位装载基址 | 第82-86页 |
| 5.4 实验结果与分析 | 第86-89页 |
| 5.4.1 字符串和文字池识别实验结果 | 第86-87页 |
| 5.4.2 定位装载基址实验结果及分析 | 第87-89页 |
| 5.5 本章小结 | 第89-90页 |
| 第6章 基于字符串存储长度分组匹配的装载基址定位 | 第90-100页 |
| 6.1 引言 | 第90页 |
| 6.2 ARM固件加载字符串地址的方式 | 第90-92页 |
| 6.3 利用字符串存储长度分组匹配定位装载基址 | 第92-96页 |
| 6.4 实验结果与分析 | 第96-99页 |
| 6.4.1 字符串和LDR指令中地址识别实验结果 | 第96-97页 |
| 6.4.2 定位装载基址的实验结果 | 第97-99页 |
| 6.5 本章小结 | 第99-100页 |
| 第7章 定位固件装载基址方法对比 | 第100-108页 |
| 7.1 方法总结 | 第100-101页 |
| 7.2 失败原因分析 | 第101-103页 |
| 7.3 效率测试与对比分析 | 第103-107页 |
| 7.3.1 装载基址定位方法的效率测试 | 第103-105页 |
| 7.3.2 效率对比 | 第105-107页 |
| 7.4 本章小结 | 第107-108页 |
| 结论 | 第108-110页 |
| 1 本文主要工作和创新点 | 第108-109页 |
| 2 下一步工作展望 | 第109-110页 |
| 参考文献 | 第110-115页 |
| 附录 | 第115-126页 |
| 附录A IDC脚本 | 第115-117页 |
| 附录B 实验结果 | 第117-126页 |
| B.1 基于函数入口表的装载基址定位方法实验结果 | 第117-120页 |
| B.2 基于字符串地址集合的装载基址定位方法实验结果 | 第120-122页 |
| B.3 基于文字池匹配的装载基址定位方法实验结果 | 第122-124页 |
| B.4 基于字符串存储长度分组匹配的装载基址定位方法实验结果 | 第124-126页 |
| 攻读学位期间发表论文与研究成果清单 | 第126-127页 |
| 致谢 | 第127页 |