DexHunter:安卓应用加固自动解包技术详解
【免费下载链接】DexHunterGeneral Automatic Unpacking Tool for Android Dex Files项目地址: https://gitcode.com/gh_mirrors/de/DexHunter
DexHunter是一款专门用于自动解压加固DEX文件的开源工具,基于Android运行时源码深度改造而成。该项目由修改后的ART和DVM运行时组成,适用于Android 4.4.3版本,能够帮助开发者和安全研究人员绕过复杂的保护机制,提取隐藏在打包应用内的原始代码。
技术原理与实现
DexHunter的核心技术在于对Android系统运行时的定制化修改。主要修改文件包括ART运行时的"art/runtime/class_linker.cc"和DVM运行时的"dalvik/vm/native/dalvik_system_DexFile.cpp",通过这些修改实现在运行过程中自动解包功能。
该工具通过直接复用原始"class_def"段内容来提高效率,避免了复杂的解析过程。如果遇到问题,用户可以自行解析和重新组装这些内容,或者进行静态修正。
使用方法与配置
要解包一个应用,需要在启动应用之前将"dexname"配置文件推送到移动设备的"/data/"目录下。"dexname"文件的第一行是特性字符串,第二行是目标应用的数据路径。文件行尾格式必须采用Unix/Linux风格。
用户可以通过"logcat"观察日志来确定解包过程是否完成。完成后,生成的"whole.dex"文件就是所需的结果,位于应用的数据目录中。
注意事项与优化建议
特性字符串非常重要,会随着硬化服务的演进而发生变化。如果特性字符串不正确,解包过程将无法触发。
某些"annotation_off"或"debug_info_off"字段在结果中可能无效,这些字段与执行无关,主要用于阻碍反编译。
针对某些硬化服务通过动态指令还原来保护特定方法的情况,需要修改"DoInvoke"(ART)或"dvmMterp_invokeMethod"(DVM)函数,在执行时提取受保护的指令。
如果"fwrite"和其他libc函数失败,可能是因为这些函数被硬化服务挂钩。可以通过直接调用相关系统调用来绕过这个限制。
项目文件说明
- "slide.pptx":HITCON 2015会议上的演讲材料,详细描述了DexHunter的设计与实现
- "demo.mp4":解包阿里硬化应用的演示视频
- "test.apk":视频中使用的示例应用
- "dexname":视频中使用的配置文件
- "art"目录:修改后的ART运行时
- "dalvik"目录:修改后的DVM运行时
- "image" 7z文件:视频中使用的系统镜像文件
应用场景与价值
DexHunter在安卓应用安全研究领域具有重要价值,可用于分析加固应用的安全漏洞、对抗反调试技术、恢复被混淆或隐藏的代码结构。
该工具支持自动化解包操作,适用于ART和DVM两种运行时环境,通过社区参与持续升级维护,配备完整的技术文档资料。
如有任何问题,可以通过电子邮件联系作者:zyq8709@gmail.com。使用本代码时请引用相关论文。
DexHunter作为一个前沿的开源项目,不断挑战着安卓应用加密防护的边界。无论是安全研究员还是开发者,都可以从中受益,深入理解并应对安卓应用加固的挑战。
【免费下载链接】DexHunterGeneral Automatic Unpacking Tool for Android Dex Files项目地址: https://gitcode.com/gh_mirrors/de/DexHunter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考