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,打开登录,爽用 ![]()
思路: 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测试,发现没有弹窗了 ![]()
思路: 反转判断条件,直接绕过sub_expires_at,让其永远返回void 0
1 个帖子 - 1 位参与者