男人的APP,收费怎么办?拿起键盘就是干

  • Post author:
  • Post category:其他




起因

那日,基佬群发了个APP,男人,你懂的,结果还是收费的,怎么办,作为一个Android的开发者,不会逆向的就不是个好歌手,直接开电脑分析他。

哈哈哈哈

首先说一下这类APP我以前见过的一种加密方式,他是服务端进行验证,如果不是VIP,就给你返回一个虚假的视频url,无论Android端你怎么搞,都会无济于事,另一种就是Android进行校验,判断是否是VIP,不是VIP弹出Dialog提示你,不让你继续XXXXX,这类好处理,找到判断的地方,修改smali,重新编译签名即可。



分析

对这行还是没深入研究过,只是在以前学习过,会点皮毛,可能连皮毛都不是,不知现在主流方式是什么,但所有人开始学习逆向应该都使用过dex2jar-2.0、apktool吧,但是一套太麻烦了,使用AndroidKiller应该就非常方便了,但是AndroidKiller只能查看smali,如果有很深厚的功底,直接分析smali、修改也可以,但是一般还是要借助其他工具反编译成java代码进行分析,然后找到关键点,在AndroidKiller中修改即可。

这个工具就是jadx-gui-0.6.1.jar 。

下面就是找关键点,我所想到的入手点有以下几处:

  1. 在播放界面找判断逻辑,将他修改
  2. APP可能把vip状态保存到本地,我们只需找到并修改他
  3. APP可能有一个全局变量,保存用户信息,其中可能有vip字段,其他地方拿到这个数据,判断是不是vip,找到并修改他。

最终我选了第三个,所以,我们要找到”我的”的界面中VIP状态显示的数据来源,将他修改。

现在很多界面都是采用单Activity多Fragment方式,所以,”我的”可能会处在一个Fragment中,要找到他很容易,找到当前Activity,找出其中Fragment切换的地方。然后就能找出”我的”界面的Fragment。

打开APP页面,输入

adb shell dumpsys window | findstr mCurrentFocus

就能查看当前的activity完整包名,(下图是我自己的一个APP包名,不是要分析的)。

在这里插入图片描述

然后在jadx-gui-0.6.1中找出这个Activity,分析里面代码,经过几秒钟的滑轮滚动,一眼就看到关键点,就是showMainUI(),这个方法,看名字就知道这是个展示主界面的函数,vpMain是ViewPagerSlide,tabMain是TabLayout,然后通过MainTabAdapter适配器进行关联。

这几行正好实现多页面左右滑动切换。

在这里插入图片描述

来到MainTabAdapter下,回点Android的都明白了,”我的”界面的Fragment是MineFragment。

在这里插入图片描述

所以,在定位到MineFragment下,最终,这段代码引起我的法眼,UserManager、isVip,没错了,用户管理,和判断是否是VIP,下面也判断了如果是VIP,然后显示VIP信息,如果不是,显示”不是VIP布局”,隐藏”VIP布局”。

在这里插入图片描述

UserManager下的isVip方法,判断当前时间是否消息过期时间,如果小于则返回true,表示是VIP,否则返回false。

所以我们直接改这里就行, 让他直接返回true。

在这里插入图片描述



修改smali

打开AndroidKiller.exe,将APP拖动进去,等待反编译完成即可,完成后定位到UserManager.smali下,找到isVip方法,改成下面即可,表示返回true。

.method public isVip()Z
    .registers 2

    .prologue
    .line 6
    const/4 v0, 0x1

    return v0
    
                                                                                                                 7  E
.end method
    

然后编译、安装即可。

在这里插入图片描述

安装后,发现新大陆,思路没有错,过期日期是1970年1月1,而vip灯却亮着,所有电影都可以看。

基佬直呼过瘾



版权声明:本文为HouXinLin_CSDN原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。