Android破解第三方App

破解前准备

  1. 安装好Android开发环境(SDK,Android studio)

  2. 安装插件 smalidea, smali support

  3. 下载最新的apktool.jar

使用apktool解包,打包

1. 执行命令 java -jar apktool.jar d xxx.apk

如果apk没有加固,执行完命令,就能看到反编译后的smali文件,可以阅读这些smali文件.

2. 打包命令 java -jar apktool.jar b 解包后的目录 >xxx.apk

可以执行打包命令,将解包,修改后的smali再打包. 如果需要调试,需要在AndroidManifest.xml文件中,加上debugable.






此时得到的apk包没有签名,需要签名后才能安装

3. 签名 jarsigner -verbose -keystore .\xxx.jks -signedjar signed.apk xxx.apk 'benzhuo'

输入密码后,签名完毕,签名后的包是signed.apk,安装这个包.

smali调试

1. 执行 java -jar apktool.jar d signed.apk. 解压刚才签名的安装包

2. 用Android Studio 打开解压后的文件夹,此时需要设置一下工程的SDK.

dfa7b38b-2b13-4f0d-b78d-cc27e05d37ad.jpg

3. 连接上测试手机, 执行命令 adb shell am start -D -W -n 包名/LauncherActivity ,以debug模式打开应用,此时手机上打开应用会弹出提示框, Waiting For Debugger.

4. 点击Android Studio的Attach Debugger 按钮.

dd743a23-7f00-402d-a351-be51757fc9bc.jpg

5. 选择调试的程序,然后就可以调试了

d27c4849-848e-4cc4-9b84-f73fe85a626d.jpg

6. 修改了Smali文件之后,需要重新打包,然后安装在手机上,再调试.

smali语言

1. 原始类型

|smali类型|java类型|

|----|---|

|B|byte|

|C|char|

|D|double|

|F|float|

|I|int|

|J|long|

|S|short|

|V|void|

|Z|boolean|

|[x| x类型数组|

|Lpackage/Object|对象|

2. 方法

  • 第一行 .locals 11 表示这个方法使用了多少个寄存器, 从0开始,v0- v10

.locals 11

  • 方法中 p0,p1表示参数的寄存器.

  • invoke-virtual 表示调用函数方法, {} 中的第一个参数是调用对象的寄存器,后面参数表示方法的参数,方法名后面的是返回值

invoke-virtual {p1}, Ljava/lang/Double;->doubleValue()D

  • invoke-static 是调用静态方法,{}中的都是方法参数.

invoke-static {v1, v2, v3, v4}, Lcom/meituan/retail/c/android/utils/v;->a(DD)Z

  • invoke-direct 调用私有方法

  • invoke-super 调用父类方法

  • move-result 是将前面方法的返回值赋值给某个寄存器.

move-result v1

  • move-object 从寄存器v9赋值到寄存器v3

move-object v3, v9

  • const-string 将字符串赋值给v10寄存器

const-string v10, "5e6d"

  • const-class 将类对象赋值给v2寄存器

const-class v2, Context

  • const/4 将int值赋值给v1寄存器

const/4 v1, 0x1

你可能感兴趣的:(Android破解第三方App)