1、最近想听陈奕迅的《十年》,就打开了我心心念念的某蓝色音乐软件,结果,没想到需要会员,没有会员还听不了全曲,于是我急了,就有了今天这个文章。
2、这里我使用的是某蓝色音乐软件的大字版

3、下载好之后,还是先拿出我们的神器——算法助手,对其进行分析

4、之后我们正常启动app,之后操作一下,然后就可以在我们算法助手的日志中进行查看详情,因为日志比较多,这里我直接搜索的蓝色软件右上角的时间,这里筛选出来后,找他的堆栈信息。

5、查了一下,发现这个蓝色软件也没有加壳,也就没有脱壳的苦恼了,所以我这里直接把它丢进jadx中进行分析,找上面的堆栈里的类。

6、我们进入第一个类里面看看他的代码详情。

7、根据上图中的代码,我们可以大致看出来这个f是重要参数,我们跟进一下,看看这个f是个什么东西,我们发现当xxx.xxx.xxx.a.f27222a.f等于7的时候全日听,当它等于1的时候也全日听。

8、所以我们这里先hook一下f试试,frida启动!!

Java.perform(function () {
    let a = Java.use("com.xxxx.xxxx.freemode.a");
    a["f"].implementation = function () {
        console.log(`a.f is called`);
        let result = this["f"]();
        console.log(`a.f result=${result}`);
        return result;
    };
});


9、根据上面分析的代码逻辑,这里我们修改一下hook代码。

Java.perform(function () {
    let a = Java.use("com.xxxx.xxxxx.freemode.a");
    a["f"].implementation = function () {
        console.log(`a.f is called`);
        let result = this["f"]();
        console.log(`a.f result=${result}`);
        return 1;
    };
});

10、修改之后,重新加载脚本后,我们发现获得了全天免费听歌。

11、说明我们修改的这个地方是对的,接下来,我们要持久化,因为这个蓝色软件没加壳,所以我们直接修改它的smali源码,这里我们先用apktool进行反编译解包。

12、然后我们找一下smali代码里f所在的位置,这里我们定位到代码在2657行。

13、定位到代码位置后,我们直接进行修改。未修改前代码如下:

2563 .method public f()I
2564     .locals 2
2565 
2566     .line 738
2567     sget-object v0, Lcom/xxxx/xxxx/freemode/a;->e:Lcom/xxxx/xxxx/freemode/b/e;
2568 
2569     instance-of v1, v0, Lcom/xxxx/xxxx/freemode/b/b;
2570 
2571     if-eqz v1, :cond_0
2572 
2573     const/4 v0, 0x1
2574 
2575     return v0
2576 
2577     .line 740
2578     :cond_0
2579     instance-of v0, v0, Lcom/xxxx/xxxx/freemode/b/d;
2580 
2581     if-eqz v0, :cond_1
2582 
2583     const/4 v0, 0x7
2584 
2585     return v0
2586 
2587     :cond_1
2588     const/4 v0, 0x0
2589 
2590     return v0
2591 .end method

14、因为根据前面分析,我们需要让它永远返回1或者7,所以,修改后的代码如下:

2563 .method public f()I
2564     .locals 2
2565 
2566     const/4 v0, 0x1
2567     
2568     return v0
2569 .end method

15、修改完成后,进行重打包

16、打完包之后进行重签名,这里先生成一个签名:keytool -genkeypair -v -keystore sectest.keystore -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 36500 -alias sectest

17、然后进行重签名:apksigner sign --ks sectest.keystore --ks-key-alias sectest xxxx_2.4.1-sec.apk,并且进行安装。

18、安装完成后,我们进入app查看,发现我们获得了免费听专属权益,会员歌曲之类的都能听了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课[[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课](https://www.kanxue.com/book-section_list-173.htm)