最近逛l站时看到了API Player的话题,这个我还真有,分享大家怎么破解

最近逛l站时看到了API Player的话题,这个我还真有,分享大家怎么破解
最近逛l站时看到了API Player的话题,这个我还真有,分享大家怎么破解

https://linux.do/t/topic/94680?u=linqingying

首先是安卓端
先用 worawit/blutter: Flutter Mobile Application Reverse Engineering Tool去解包apk,然后直接搜索calculateRemainingTimeInDays()方法的使用上下文,
找到这样一串代码(地址可能不同)

    // 0x645c40: r0 = calculateRemainingTimeInDays()
    //     0x645c40: bl              #0x633ed0  ; [package:flix/helper/date_formatter.dart] ::calculateRemainingTimeInDays
    // 0x645c44: r1 = LoadClassIdInstr(r0)
    //     0x645c44: ldur            x1, [x0, #-1]
    //     0x645c48: ubfx            x1, x1, #0xc, #0x14
    // 0x645c4c: r16 = "0"
    //     0x645c4c: ldr             x16, [PP, #0x3338]  ; [pp+0x3338] "0"
    // 0x645c50: stp             x16, x0, [SP]
    // 0x645c54: mov             x0, x1
    // 0x645c58: mov             lr, x0
    // 0x645c5c: ldr             lr, [x21, lr, lsl #3]
    // 0x645c60: blr             lr
    // 0x645c64: tbz             w0, #4, #0x645c70

可以看到最下方的tbz w0,#4 记住这段地址,直接打开disElf2(这个是安卓软件,使用方便)之类的反汇编软件,打开libapp.so搜索这段地址,直接修改tbz为tbnz,保存退出,替换回apk,打开登录,爽用 :innocent:
思路: calculateRemainingTimeInDays获取剩余天数,通过tbnz反转为 != 0(原来是 == 0)

pc端
pc端就简单一些了,pc端是使用Electron写的(可能需要asar解包,这里就不说了),所以直接修改js代码逻辑即可
在renderer.build.js中全局搜索 sub_expires_at 可以看到类型以下代码

null==a?void 0:a.sub_expires_at

直接改为null==null 直接反转让其绕过sub_expires_at (所有都改)
改完这样:

null==null?void 0:a.sub_expires_at

最后打包asar,打开api player测试,发现没有弹窗了 :innocent:
思路: 反转判断条件,直接绕过sub_expires_at,让其永远返回void 0

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文