记一次成功脱壳修复dex的过程


某票务app,因为有腾讯加固,首先需要脱壳。

1、脱壳,看这里 ,得到脱壳的dex文件;

2、用baksmali工具,把 第1步的 dex转换成smali;

2、反编译,用 apktool d ./com.xxx.mobile.apk,反编译,得到加固的apk解压包;

4、替换 smali 文件夹,用 第2步 的 smali 文件夹替换掉 解压包中的 smali;

5、找入口,修复入口;

打开原文件的dex,找到com/wrapper/proxyapplication/WrapperProxyApplication
进去复制入口后到AndroidManifest.xml中替换入口
这是dex中的入口

.field static baseContext:Landroid/content/Context; = null
.field static className:Ljava/lang/String; = "i.app.applicationMain"#这是入口
.field static mLoader:Ljava/lang/ClassLoader; = null
.field static shellApp:Landroid/app/Application; = null
.field static tinkerApp:Ljava/lang/String; = "tinker not support"

然后替换到AndroidManifest.xml中替换入口,下面是替换后的

android:theme="@7f090000"
android:label="@7f080000"
android:icon="@7f030000"
android:name="i.app.applicationMain"#这里就是要替换的地方
android:hardwareAccelerated="true"
android:largeHeap="true"
android:supportsRtl="true"
android:resizeableActivity="true">

6、第六步,删除腾讯加固的相关文件,一般在assets、lib目录下,文件名如下:

  • tencent_stub
  • tosversion
  • 0OO00l111l1l
  • o0oooOO0ooOo
  • 文件名带有shell的

7、用 apktool b com.xxx.mobile 编译apk;

8、用 androidkiller 打开 第7步的 apk,然后用androidkiller编译;

9、安装到模拟器,正常运行,ok。

参考(强烈推荐):https://www.52pojie.cn/thread-1453091-1-1.html

相关