当前位置:网站首页 > 编程语言 > 正文

de4dot无法反混淆(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库做关联。

到此这篇de4dot无法反混淆(dex反混淆工具)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 合并数组区间(合并数组区间怎么设置)2025-12-01 22:18:09
  • 苹果电脑剪辑视频(苹果电脑剪辑视频好用吗)2025-12-01 22:18:09
  • 打印控件(数电票纳税人端打印控件)2025-12-01 22:18:09
  • 抖音怎么扫二维码登录抖店(抖音如何扫码二维码)2025-12-01 22:18:09
  • mt103报文解析(mt100报文)2025-12-01 22:18:09
  • w25q128jvsiq参数(w25q128bv)2025-12-01 22:18:09
  • 如何关闭程序快捷键(快速关闭程序的快捷键)2025-12-01 22:18:09
  • 16进制解析(16进制解析器)2025-12-01 22:18:09
  • 抽奖小程序制作(希沃抽奖小程序制作)2025-12-01 22:18:09
  • 什么加速器可以改变ip到国外(什么加速器可以改变ip到国外免费)2025-12-01 22:18:09
  • 全屏图片