探索Android Dalvik dex加载流程与逆向脱壳关键点

需积分: 0 0 下载量 191 浏览量 更新于2024-06-15 收藏 3.71MB DOCX 举报
本文档是一份关于安卓逆向工程的学习笔记,重点关注了Dalvik虚拟机下DEX(Dalvik Executable)加载流程以及通用的脱壳点。在安卓应用的运行过程中,DEX文件是Android应用程序的主要执行单元,而理解其加载机制对于逆向工程师至关重要。 首先,DEX加载流程通常从设置parent(可能指的是设置父进程或者加载环境)开始,通过一系列判断来确保环境准备就绪。然后,在特定位置(文件名)赋值,可能是指向某个关键的cpp(C++)模块,这是DEX执行的起点。加载过程会优化性能,通过查找和调用优化过的代码,提高应用运行效率。 在安卓4.4版本中,为了进行逆向分析,可能需要额外添加驱动程序,这暗示着可能存在特定的安全机制或对底层硬件的特殊处理。文档提到了几个常见的脱壳点,这些点通常是应用执行流中的关键控制点,逆向者可以通过干预这些点来获取更多信息或进行调试。 为了避免标准函数被钩子(Hooking)或拦截,该文档推荐使用系统函数来保持原始代码的完整性,这样可以确保被dump(转储)的数据更加准确。源代码编译过程中,如果遇到缺少头文件的情况,需要补充相应的依赖,以使编译顺利进行。 编译完成后,生成的文件需要适配到目标设备,可能涉及到刷入特定的固件。这里提到的bat刷机脚本负责将这些文件逐个安装到手机,同时强调了在安装之前可能需要对脚本中的文件名进行定制。在实际应用中,这个阶段往往发生在手机进入bootloader模式时,以便对系统进行低级别的操作。 在Demo中,当Activity(活动)启动时,会插入特定的代码段,这可能是为了实现某种功能或者用于注入逆向工具。最后,脱壳后的DEX文件会被进一步处理,去除不必要的部分,以适应逆向分析的需求。 这份学习笔记提供了安卓逆向过程中关于DEX加载、驱动安装、脱壳策略、编译步骤和植入技术的深入见解,对于希望深入了解安卓应用内部工作原理的开发者和逆向工程师来说,具有很高的参考价值。