Android破取某漫画app获得VIP权限

作者: a49f87ef5d4f | 来源:发表于2019-02-17 22:18 被阅读0次

    0.前言

    昨天去公司加班,写业务代码写的我是心烦意乱,今天本打算再继续写的,但是就像肉吃多了也腻一样,想搞点新花样试试,最近对写外挂和破解app很有兴趣,想到最近某漫画app里的某部漫画需要用vip权限才能看,那今天我就想破解这个app,免费获取vip权限。

    注意:只是用来学习交流,尊重正版尊重创作者,不要用于非法用途

    1.准备工具

    1.1 apktool

    现在好像比较流行用android killer,但是没有mac版,就用这个了,用来解压apk和重新打包apk。

    1.2 dex2jar

    用来将dex文件转换成jar包

    1.3 jdgui

    反编译jar包,得到java代码

    1.4sublime

    用来查看代码
    本文不涉及这些工具的使用方法,只是描写一下思路,具体使用方法请google。

    2.过程

    2.1解压apk

    apk就是zip打包的,将apk后缀修改为zip,所以直接用zip解压就行,如果apk用v2签名的话,解压的时候会报错,这个时候不要担心,硬解,用命令行unzip **.apk。

    image

    2.2用dex2jar得到jar包

    image

    2.3用jdgui反编译jar包

    image

    2.4分析

    用jdgui查看java代码,你会发现代码是经过混淆的,这很正常,压根也没期望它不会混淆,混淆不要紧,无非就是变量方法换换名字嘛,耐心分析就好。咱们先正向的想一下,咱们来做一个app,vip权限一般都是在你登录的时候服务器返回给你的一个字段,用来标注你是vip,然后你存储在本地,写一个方法可以判断你是不是vip,打开需要vip的章节的时候先判断你是不是vip,如果是的话就可以打开该锁定章节了。咱们要做的就是修改这个方法,判断vip的时候始终返回true。
    既然大致思路有了,那么最主要的问题就是如何确定这是哪个方法在哪个类里。我们先看一下apk的账户页面

    image

    可以看到这个蓝色的item就是显示vip信息的。一般app都会把这些文字放在string.xml这种资源文件里,资源文件又会生成R文件标记它的位置,一个int类型,我的思路是通过找到这个R文件中该string的int值,看哪个类的TextView用到了这个string,这个TextView肯定会根据是否是vip而显示不同的东西,然后基本上就可以找到咱们前面说的那个判断vip的方法了

    2.5操作

    apktool解压apk
    得到的文件如下图所示


    image

    得到资源文件和smail文件,用sublime打开,打开string.xml文件,搜索**漫画VIP,可以看到

    image

    然后全局搜索vip_state_1

    image

    这就是这个string的id,然后全局搜索id

    image

    可以看到VipInfoView.smail里使用了string,VipInfoView,名字也很清晰了,肯定就是它了,

    image

    可以看到在VipInfoView的a()方法里调用textView的setText设置了这个string。
    这里先不着急看smail文件,打开jdgui,查看VipInfoView.class,搜索a方法,看看在哪里引用,虽然VipInfoView里没有直接引用,但是我会发现一个方法,名字很直白

     public void setLoginState(com.netease.cartoonreader.i.b paramb)
      {
        boolean bool1 = q.a().c();
        ...
          bool2 = q.a().c();
          if (!bool1) {
            break label452;
          }
      ....
          label452:
          this.g.setText(2131625239);
        ...
      }
      
    

    我省略了大部分代码,你会发现如果bool1为false就会跳到label452,调用textview设置text,2131625239有没有很熟悉?这就是那个string的id的十进制表示。所以我推断这个q.a().c()方法就是用来判断vip的,打开com/netease/cartoonreader/e/q这个smail文件
    找到这个c方法,修改如下

    .method public c()Z
        .locals 5
    
        .prologue
        const/4 v4, 0x1
        
        return v4
    
    .end method
    

    关于smail其实我也不是很精通,只是知道一些基本的语法,大家自己去看看就好,不难
    使用apktool重新打包,签名安装。最终效果

    image

    3总结

    整体看难度不大,大家学习参考就好。

    image

    关注我的公众号

    相关文章

      网友评论

        本文标题:Android破取某漫画app获得VIP权限

        本文链接:https://www.haomeiwen.com/subject/rbwneqtx.html