Android实操(一):绕过VIP权限
准备环境:
酷我音乐车机版5.0.0.0原版.apk
apktool
签名工具
java自带工具key证书生成
模拟器
一:正常安装APP,查看VIP限制
随便点点,看看哪里有需要VIP才可以使用的功能,发现音效和皮肤都需VIP权限
汽车音效示意图:
皮肤使用示意图:
二、反编译该apk,得到apk源码
工具:apktool
使用方法:进入apktool目录,进入cmd,通过命令 apktool d 目标apk得到源码 (未选择目录将会反编译到当前目录)
apktool.bat d E:\001\05_Android程序破解示例\酷我音乐车机版5.0.0.0原版.apk
反编译完成
三、查找与提示相关的代码文件,从提示开始找,一直找到有逻辑关系的代码文件修改逻辑关系跳过VIP检验
通过 notepad++ 查找源码文件夹下包含 “即享专属汽车音效特权” 字符串的代码文件
查找结果会出现在下方
点击进入该文件,无逻辑语句,发现name属性名称,按相同步骤再次查找该name dialog_content_tips_use_car_effect
找到3个含有该name的文件,可以找出ID为 0x7f08001d,按相同步骤再次进行查找
共找出4处含有该ID的文件,显然下面两个是含有判断语句的代码块
可以看到有if语句在判断是否为会员情况,该判断条件是若v0不等于0,则执行下面这条非会员提示的语句,此时我们可以将v0赋值为0,也可以直接使用goto语句跳过这段代码来实现绕过VIP判断,下面的代码块修改方式相同,修改完成后保存即可。
四、根据经验,直接在目录树中查找
一般字符串都会保存在反编译后的res文件夹下values文件夹下的strings.xml文件中
打开strings.xml文件,查找 “即享专属汽车皮肤特权”,找到name属性值
一般name属性会存放在res下values下的public.xml文件下,找到ID属性
根据ID属性值,从文件夹中找含有ID值的代码文件,同上,使用goto修改判断语句直接跳过该判断
五、保存修改后的文件,使用apktool重新编译该文件为apk包
步骤:在apktool文件夹下打开cmd,使用命令 apktool.bat b 目标文件夹(重编译后的apk在目标文件夹下的dist目录下)
命令:apktool.bat b D:\Android工具\apktool\酷我音乐车机版5.0.0.0原版
重编译完成
六、重新签名
此时编译后的包是没有签名的,没有签名安卓系统不会让他安装,所以需要我们自己给他签一下名,用java自带工具也可以签名,这里用一款签名软件来签名
生成签名证书:
1.进入一个目录,打开cmd
输入命令:keytool -genkey -v -keystore myApp.keystore -alias myApp.keystore -keyalg RSA -validity 30000
命令详细说明
key | dec |
keytool | 工具名称(固定写法) |
)-genkey | 执行的是生成数字证书操作(固定写法) |
-v | 打印生成证书的详细信息 |
-keystore myApp.keystore | 生成的证书的文件名为"myApp.keystore"(根据需求,设置你的证书名) |
alias myApp.keystore | 证书的别名为"myApp.keystore"。(一般和上面的文件名相同,可以不同,但要记好,签名时会用(A)) |
-keyalg RSA | 生成密钥文件采用的算法为RSA(固定写法) |
-validity 3000 | 该数字证书的有效期为30000天,30000天之后该证书将失效 |
按格式执行命令,
第一步会要求创建一个密钥。自己输入一个并记好(后面签名时还会用到的)。输入后并不会显示在窗口中,直接回车后,要求再次输入,重复输入后回车。
然后按提示填写各个问题。
最后在生成证书时会要求输入一个密钥,比如 : android 这个密钥是后面签名要用到的务必记好(B),建议与上面密钥相同。输入后回车
就可以在当前命令行的位置生成如:"myApp.keystore"的证书文件。
生成文件
使用工具对APP进行签名,最后提示success表示签名成功,签名后会在源文件夹出现一个***sign.apk即为签名后的apk,安装此apk即可
使用命令给apk签名
把apk 与 myApp.keystore 放在同一目录下(不放在同一目录下也可以。放同目录下省去了配置路径的麻烦)
在该目录下执行命令:
jarsigner -verbose -keystore myApp.keystore -signedjar android-release-signed.apk android-release-unsigned.apk myApp.keystore
命令详细说明
key | dec |
jarsigner | 工具称名(固定写法) |
-verbose | 显示出签名详细信息 |
-keystore myApp.keystore myApp.keystore | 要使用的签名证书文件 |
-signedjar android-release-signed.apk | 签名后的文件名 |
android-release-unsigned.apk | 要签名的文件 |
myApp.keystore | 别名,即(A)步中的别名 |
执行上面命令会要求输入签名密码,比如 android (上面(B)位置提到的)后回车,会在同目录下生成一个签好名的的android-release-signed.apk即为可发布的签名包
七、验证是否绕过VIP限制
音效验证:
皮肤验证: