# 物种起源 最近在做新东西的时候,由于业务模式的问题,如有更新,发版本并不合适我们的场景,这就需要用到动态化的需求。当时就需要评估技术方案了 1. 类似于BlackBox的虚拟化 2. 造轮子 3. 腾讯Shadow 处于快速,稳定性和轻量级原则,选择了腾讯的Shadow,毕竟也是大肠项目,非常可靠。 [x-github url="https://github.com/Tencent/Shadow" /] # 撸起 ** 开干 刚把项目拉下的时候,有点懵逼,离离原上谱啊家人们,这么多模块。 ![5ba15d07e72c27cadd2fa1de0874f115.jpg](https://milk-blog.oss-cn-hangzhou.aliyuncs.com/typecho/2024/03/15/5ba15d07e72c27cadd2fa1de0874f115.jpg) # 源码层及运行模式 经过一番摸索,其实整体的流程也是比较简单的,我感觉核心还是在gradle的plugin ## 运行模式 Shadow 支持两种运行模
## 0x1 关于BlackObfuscator BlackObfuscator是基于dex2jar开发的Dex控制流混淆,开源地址:[https://github.com/CodingGay/BlackObfuscator][1],现有的混淆一般只支持处理变量名、类名,这样做对抗是远远不够的。由于对于控制流此类资料较少,加上也没有现成方案,所以当时就自己研究了一下,现在出来分享一下设计思路。 ## 0x2 源码 BlackObfuscator的核心模块为dex-obfuscator,源码目录: ``` ├── IRObfuscator.java ├── LBlock.java ├── ObfDic.java ├── ObfuscatorConfiguration.java ├── RebuildIfResult.java └── chain ├── FlowObfuscator.java ├── IfObfuscator.java ├── SubObfuscator.java └── base ├──
## 书接上回 想要了解如何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