## 书接上回 想要了解如何dump出Dex,就要先了解Dex文件是如何加载进内存的。上文说到Application是通过LoadedApk#makeApplication完成的,那么我们看下相关实现。 本文源码为:android11_r1 系统源码:**android.app.LoadedApk#makeApplication** ```java @UnsupportedAppUsage public Application makeApplication(boolean forceDefaultAppClass, Instrumentation instrumentation) { if (mApplication != null) { return mApplication; } Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "makeApplication");
## 0x1 前言 **[前篇][1]** 说到,BlackDex是基于虚拟化技术进行的,本项目实际上是基于 **[BlackBox][2]** 的基础下进行开发,很可惜的是由于某些原因此项目没能继续下去。 本系列将选定发表时最后的提交,朋友们可以Clone下来跟着本文走:[https://github.com/CodingGay/BlackDex/tree/5580fa8f5d658afae4eb667f8c8d6632be5b9aaf][3] ## 0x2 启动 本文主要分析如何从点击BlackDex图标之后,是如何进行启动APP的进程,此处不会过度深究虚拟化的实现过程,有机会更完这个系列之后会再出一系列虚拟化技术的文章。 核心启动dump方法:**top.niunaijun.blackbox.BlackDexCore#dumpDex(java.lang.String)** ```java public InstallResult dumpDex(String packageName) { // 将软件安装至BlackBox中
## 0x1 前言 在现阶段Android环境下,开发者为了保护自身APP不被反编译以及逻辑的解读、应用重打包,许多开发者都会选择对APP进行加固,APP经过加固,一定程度上保护了APP,使APP没那么容易被反编译。当然,有加固技术的出现,也会有反加固技术的出现,即本文要分析的一种反加固的原理。 ## 0x2 BlackDex BlackDex是一个运行在Android手机上的脱壳工具,支持5.0~12,无需依赖任何环境任何手机都可以使用,包括模拟器。只需几秒,即可对已安装包括未安装的APK进行脱壳。 项目开源地址:[https://github.com/CodingGay/BlackDex][1] **本项目现仅供参考,因开源的原因,已经被许多加固厂商Anti,点到为止,现已停止维护。** ## 0x3 前置知识 本项目涉及知识点,按照重要程度排序 - Android 虚拟化技术 - Android Dex加载原理 - Android DexFile结构 - Android Hook ## 总结 **BlackDex核心原理是利用虚拟
牛奶君
https://t.me/niunaijun