发布网友 发布时间:2022-04-26 08:55
共1个回答
热心网友 时间:2022-06-26 05:06
可以在Dex文件头隐藏另一个DEX数据并在运行时加载附带DEX数据。 构建非规范的Dex文件 通过反射调用DexFile类的方法加载附带DEX数据 通过反射实际调用DexFile的openDexFile方法 该种方式允许通过byte[]解析dex数据,而无须在再把DEX数据存储在设备的某个文件。 可以从安装APK文件、内存或dalvik-cache等读取dex数据。 该种方式将给自动化分析工具带来一个问题,自动化工具会按照dex格式处理DEX文件而不会处理附带的dex数据。需要特定的工具、16进制编辑器或手工提取嵌入的dex数据。 我们可以采用各种不同的方式增加嵌入数据的提取难度,比如: 对嵌入的DEX数据进行加密; 嵌入的DEX数据加密后在对其进行ZIP压缩; 使用native代码解密,直接从内存加载; ......等等 该种隐藏方式可以通过判断Dex文件头长度是否大于0x70检测。