用DumpDex反编译App
Posted wodongx123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用DumpDex反编译App相关的知识,希望对你有一定的参考价值。
文章目录
注:反编译是一个双方都在不断迭代升级的技术,该文章仅供个人记录使用,现在已经不建议使用该方法反编译。
事前准备
-
一个解锁,并且安装了Magisk和Xposed的手机
-
android Studio
1. 操作
DumpDex项目
https://github.com/WrBug/dumpDex
- 下载项目源码,用Android Studio打开,调试到可以安装的程度。
- 打包之后安装到手机上,同时Android Studio的logcat中搜索dump,查看日志。
- 在Xposed Manager中,启动DumpDex,然后重启手机。
- 打开目标App。
- 如果没有遇到明显的报错日志,应该就没问题了。
- 下载一个es浏览器,在开启root权限之后,进入系统根目录,data/data/目标的应用包名/dump
1.1 No variants found for ‘app’. Check build files to ensure at least one variant exists.
表示你的Android Studio没有对应版本的SDK
打开右上角的SDKManager,下载对应版本的Android SDK
1.2 A problem occurred configuring project ‘:app’.
A problem occurred configuring project ‘:app’.
java.lang.NullPointerException (no error message)
build -> rebuild project
1.3 签名
build -> gengereate signed Bundle/Apk -> 剩下的百度,这个app不能直接点绿色的运行,只能打包之后运行。
1.4 报错
java.lang.NoSuchMethodError: java.lang.DexCache#getDex()#bestmatch
at de.robv.android.xposed.XposedHelpers.findMethodBestMatch(XposedHelpers.java:443)
at de.robv.android.xposed.XposedHelpers.findMethodBestMatch(XposedHelpers.java:456)
at de.robv.android.xposed.XposedHelpers.callMethod(XposedHelpers.java:1263)
at com.wrbug.dumpdex.dump.LowSdkDump.dump(LowSdkDump.java:51)
at com.wrbug.dumpdex.dump.LowSdkDump.access$000(LowSdkDump.java:24)
at com.wrbug.dumpdex.dump.LowSdkDump$1.afterHookedMethod(LowSdkDump.java:42)
at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:94)
at EdHooker_2fbedf373afdb897c32b735747eec14394845d63.hook(Unknown Source:60)
有可能是因为你的Android版本太高了,找到XposedInit.java这个文件,将handleLoadPackage中的if/else加载改成固定加载OreoDump.init。
1.5 libnativeDump.so not found
官网介绍:
将 lib/armeabi-v7a/libnativeDump.so 复制到 /data/local/tmp/libnativeDump.so ,权限 设置为777,arm64机型还需要将将 lib/arm64-v8a/libnativeDump.so 复制到 /data/local/tmp/libnativeDump64.so可以通过文件管理器操作,也可以使用如下adb shell命令
#仅适用于32位手机
adb shell
su
cp /data/data/com.wrbug.dumpdex/lib/libnativeDump.so /data/local/tmp
chmod 777 /data/local/tmp/libnativeDump.so
配置完成后激活xposed重启即可
- 解压app-release.apk文件(重命名为zip后解压),拷贝其中文件 lib\\armeabi-v7a\\libnativeDump.so 文件到手机目录:/data/local/tmp/libnativeDump64.so (因为我是64位手机,所以,so文件,的名字是这么多,如果是32位的,就没有64这个)(源so,不需要使用64位的)
- 将armeabi-v7a中的libnativeDump.so,复制到手机上的/data/local/tmp目录上,然后用es浏览器修改读写执行权限。
- 如果是64位手机(一般来说都是),将arm64-v8a中的libnativeDump.so改名为libnativeDump64.so,也丢到手机的/data/local/tmp中。
1.6 /data/local/tmp/libnativeDump64.so" is 64-bit instead of 32-bit
用cmd打开adb
输入
C:\\Users\\admin\\AppData\\Local\\Android\\Sdk\\platform-tools>adb shell
alioth:/ $ su
alioth:/ # getenforce
Enforcing
alioth:/ # setenforce 0
alioth:/ # getenforce
Permissive
alioth:/ #
如果输入su的时候提示permission denied,打开手机的magisk点击下方的盾牌,看看shell是否有被授予权限。
1.7 DumpDex Error: unable to find the Symbol :
DumpDex无法反编译这个app
参考材料
https://www.jianshu.com/p/4d64eb2e46cb
https://github.com/WrBug/dumpDex
https://github.com/WrBug/dumpDex/issues/40
以上是关于用DumpDex反编译App的主要内容,如果未能解决你的问题,请参考以下文章