概述
本文只介绍具体的原理和实现,不涉及Xposed相关技术点。想要了解Xposed具体配置和实现的请参考Xposed的配置与简单使用
直接反编译apk
脱壳工具FDex2
脱壳流程
第一步、激活
FDex2和需要脱壳的应用都安装到手机上。在Xposed install模块中勾选FDex2,重启手机。
第二步、选择软件
然后打开FDex2应用,在应用列表中选择需要脱壳的应用,保存dex即可。
第三步、运行软件
运行要脱壳的软件,不打开运行软件是无法脱出壳的
第四步、dex目录
找到dex目录,这里的dex就是脱壳后的dex文件,也就是我即将hook的dex文件。目录一般是/data/user/0/com.luhu.package.xxx。
hook过程
由于被腾讯加固,所以第一步是需要获取对应ClassLoader;在之后的逆向过程中使用的ClassLoader都是这个ClassLoader。
1 | if(lpparam.packageName.startsWith("com.luhu.livexiuwu")){ |
脱壳原理
通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),在将里面的dex写出。
脱壳获取dex的关键代码:
1 | private static void fDex(XC_LoadPackage.LoadPackageParam loadPackageParam2){ |
参考资料
Ursprünglicher Link: http://nunu03.github.io/2019/07/03/tencentfdex/
Copyright-Erklärung: 转载请注明出处.