2025年de4dot无法反混淆(dex反混淆工具)

de4dot无法反混淆(dex反混淆工具)接入了性能监控 SDK 当用户端发生异常时可以将异常信息上传到后台统计平台 根据关键字 NoClassDefFo 查到了官方文档 官方文档 https developer android com studio build multidex hl zh cn keep 使用官方文档修改配置模块的 build gradle 发现主 dex 分包配置无效

大家好,我是讯享网,很高兴认识大家。



接入了性能监控SDK,当用户端发生异常时可以将异常信息上传到后台统计平台。



根据关键字 NoClassDefFoundError 查到了官方文档

官方文档 https://developer.android.com/studio/build/multidex?hl=zh-cn#keep

使用官方文档修改配置模块的build.gradle,发现主dex分包配置无效。生成的apk可以在AndroidStudio中直接查看(把APK拖到AndroidStudio中或者去编译后的目录app/build/outputs/apk/*.apk双击进行查看)

最终排除掉MultiDex配置相关的排查方向


讯享网

异常是加固组件上传的,是否是加固流程解析Dex文件异常导致

加固过程
读取初始的AndroidManifest文件,读取并保存初始的Application节点的类路径,如com.test.OriginApplication
修改AndroidManifest文件,替换Application节点的类路径,如jiagu.test.JiaguApplication
对原有的所有dex文件进行加密并存储到apk文件中
解加固相关的所有文件生成一个class.dex文件,作为加固后的apk的唯一dex文件

解加固过程
打开应用时,系统默认会加载新生成的dex文件以及新的AndroidManifest文件
此时相当于打开了另一个apk->jiagu.test.JiaguApplication,在新apk的Application初始化时,进行解加固操作
将原有的dex文件解压缩以及解密
使用类加载器加载原有的dex文件,将原有的类加载到内存中
此时com.test.OriginApplication因为原有的dex文件经过了类加载,原有的Application可以被加载和创建
使用原有的Application->com.test.OriginApplication替换ActivityThread中的Application->jiagu.test.JiaguApplication
应用生命周期回到正常的轨道

从以上流程可以知道,解加固过程存在加载dex文件的流程,如果该流程出现异常,就会导致类加载异常


加固组件需要丰富日志,当出现以上异常时,尝试手动加载相关类,观察是否会发生同一种异常。

该问题使用同种机型未能复现线上问题,待日志丰富后继续排查。

PS:近期发现类似报错,提示信息是ClassNotFound,但实际是低版本手机缺少了某个so库导致。当发生这种异常时,很难直接定位到相关问题。因为后台的异常报错中不会将异常信息和缺少so库做关联。

小讯
上一篇 2025-05-26 12:22
下一篇 2025-06-06 15:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179870.html