吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2366|回复: 7
收起左侧

[Android 原创] 云上写作APP会员代码分析总结

[复制链接]
anke1 发表于 2026-2-28 15:09
好久没有发帖了,群友求助软件,更新一下

教程开始
首先软件各大应用商店下载,此贴以vivo应用商店为例

软件去签后打开全部dex,常量搜索会员后只发现有两个支付接口

于是找到resources.arsc进行搜索资源值〔VIP〕,发现这段字对应了软件上的提示,
09ffeec3b382404d708b13980d69bb1d.jpg

接下来复制ID打开dex,搜索后选第一个。
5fba826c932734c213696203b88ff727.jpg
打开第一个方法名进行代码分析

1838c22673d7a1d8d1f4ef314c4df803_720.jpg


[Asm] 纯文本查看 复制代码
thod private l0(I)V
    .registers 6
    .line 1
    invoke-static {}, Lcom/yunshangxiezuo/apk/db/c;->d0()Lcom/yunshangxiezuo/apk/db/c;
    move-result-object v0
    invoke-virtual {v0}, Lcom/yunshangxiezuo/apk/db/c;->y0()Z
    move-result v0
    if-nez v0, :cond_1f
    .line 2
    invoke-static {}, Lcom/yunshangxiezuo/apk/db/c;->d0()Lcom/yunshangxiezuo/apk/db/c;
    move-result-object p1
    invoke-virtual {p0}, Landroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources;
    move-result-object p0
    const v0, 0x7f10011e
    invoke-virtual {p0, v0}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
    move-result-object p0
    sget v0, Lcom/yunshangxiezuo/apk/db/c;->A:I
    invoke-virtual {p1, p0, v0}, Lcom/yunshangxiezuo/apk/db/c;->u1(Ljava/lang/String;I)V
    return-void
    .line 3
    :cond_1f
    iget-object v0, p0, Lcom/yunshangxiezuo/apk/MainActivity;->c:Ljava/util/List;
    invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
    move-result-object p1
    check-cast p1, Lcom/yunshangxiezuo/apk/model/sync/book_details;
    .line 4
    invoke-virtual {p1}, Lcom/yunshangxiezuo/apk/model/sync/book_details;->getUuid()Ljava/lang/String;
    move-result-object v0
    iput-object v0, p0, Lcom/yunshangxiezuo/apk/MainActivity;->h:Ljava/lang/String;
    .line 5
    invoke-virtual {p1}, Lcom/yunshangxiezuo/apk/model/sync/book_details;->getUSN()J
    move-result-wide v0
    const-wide/16 v2, 0x0
    cmp-long v0, v0, v2
    if-nez v0, :cond_43
    .line 6
    invoke-static {}, Lcom/yunshangxiezuo/apk/db/c;->d0()Lcom/yunshangxiezuo/apk/db/c;
    move-result-object p0
    sget p1, Lcom/yunshangxiezuo/apk/db/c;->A:I
    const-string v0, "请先同步数据"
    invoke-virtual {p0, v0, p1}, Lcom/yunshangxiezuo/apk/db/c;->u1(Ljava/lang/String;I)V
    goto :goto_68
    .line 7
    :cond_43
    new-instance v0, Lcom/yunshangxiezuo/apk/activity/view/w;
    new-instance v1, Lcom/yunshangxiezuo/apk/f;
    invoke-direct {v1, p0, p1}, Lcom/yunshangxiezuo/apk/f;-><init>(Lcom/yunshangxiezuo/apk/MainActivity;Lcom/yunshangxiezuo/apk/model/sync/book_details;)V
    invoke-direct {v0, p0, v1}, Lcom/yunshangxiezuo/apk/activity/view/w;-><init>(Landroid/app/Activity;Landroid/view/View$OnClickListener;)V
    iput-object v0, p0, Lcom/yunshangxiezuo/apk/MainActivity;->w:Lcom/yunshangxiezuo/apk/activity/view/w;
    .line 8
    invoke-virtual {p0}, Landroid/app/Activity;->getWindow()Landroid/view/Window;
    move-result-object p1
    invoke-virtual {p1}, Landroid/view/Window;->getDecorView()Landroid/view/View;
    move-result-object p1
    check-cast p1, Landroid/view/ViewGroup;
    .line 9
    iget-object v0, p0, Lcom/yunshangxiezuo/apk/MainActivity;->w:Lcom/yunshangxiezuo/apk/activity/view/w;
    const-string v1, "从相册中选择"
    invoke-virtual {v0, v1}, Lcom/yunshangxiezuo/apk/activity/view/w;->e(Ljava/lang/String;)V
    .line 10
    iget-object p0, p0, Lcom/yunshangxiezuo/apk/MainActivity;->w:Lcom/yunshangxiezuo/apk/activity/view/w;
    const/16 v0, 0x11
    const/4 v1, 0x0
    invoke-virtual {p0, p1, v0, v1, v1}, Landroid/widget/PopupWindow;->showAtLocation(Landroid/view/View;III)V
    :goto_68
    return-void
.end method

1. 先判断你 是不是VIP(调用  y0() )
- 不是VIP → 弹提示,不让用
- 是VIP → 继续往下走
2. 拿到你点的那本书/文档
3. 判断这本书 有没有同步过(USN 是否为 0)
- 没同步 → 提示: 请先同步数据
- 同步过 → 正常执行
4. 最后弹出一个选择框:从相册中选择

所以我们选中y0进行转跳

[Asm] 纯文本查看 复制代码
.method public y0()Z
    .registers 7
    .line 1
    invoke-virtual {p0}, Lcom/yunshangxiezuo/apk/db/c;->p0()Lcom/yunshangxiezuo/apk/model/users;
    move-result-object p0
    .line 2
    invoke-virtual {p0}, Lcom/yunshangxiezuo/apk/model/users;->getVip_forever()J
    move-result-wide v0
    const-wide/16 v2, 0x1
    cmp-long v0, v0, v2
    const/4 v1, 0x1
    if-nez v0, :cond_10
    return v1
    .line 3
    :cond_10
    invoke-virtual {p0}, Lcom/yunshangxiezuo/apk/model/users;->getVip()J
    move-result-wide v4
    cmp-long p0, v4, v2
    if-nez p0, :cond_19
    return v1
    :cond_19
    const/4 p0, 0x0
    return p0
.end method


1. 先拿到当前登录的用户信息
2. 查用户的 永久VIP 状态( getVip_forever )
- 如果等于 1 → 直接判定:你是VIP,返回  true
3. 如果不是永久VIP,再查 普通VIP 状态( getVip )
- 如果等于 1 → 也判定:你是VIP,返回  true
4. 两个都不是 → 判定:你不是VIP,返回  false

转跳getVip_forever后进入了com.yunshangxiezuo.apk.model.users类

1. getUpdated_at()
返回: updated_at  字符串
意思:用户信息最后更新时间
2. getUuid()
返回: uuid
意思:用户唯一Id
3. getVip()J
返回: vip  长整型
意思:普通VIP 的状态 / 到期时间戳
4. getVip_forever()J
返回: vip_forever  长整型
意思:永久VIP
通常:
= 0 → 不是永久
= 1 → 永久VIP
5. getVip_last()
返回: vip_last  字符串
意思:VIP最后一次更新时间
所以我们修改getvip和getVip_forever就可以了
因为getvip和getVip_forever的返回值都是J型
所以我们这里插入const-wide/16 v0, 0x1而不是const/4 v0, 0x1
我们这里顺便把VIP到期时间改成终身会员,更美观些
9f45ce243219174f8a6950f6b9acf608.jpg
会员功能都能用,免责声明:新用户注册有送的会员,不知道代码修改是否有效,等到明天会员过期了再更新教程


教学全网首发,转载请标明出处,谢谢!

271a8d3962a890fba985f8efced5df12.jpg d12756dd9b7c678f81efd0d1d0fd43e9.jpg 63a28ab6fe7fb5b78abf269fbbce8b6a.jpg

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
daxz + 1 + 1 谢谢@Thanks!
buluo533 + 1 + 1 用心讨论,共获提升!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

昧光 发表于 2026-2-28 16:48
const-wide/16   这个16是什么意思
amwquhwqas128 发表于 2026-2-28 18:06
Tsuki0402 发表于 2026-2-28 20:15
 楼主| anke1 发表于 2026-3-1 09:50
昧光 发表于 2026-2-28 16:48
const-wide/16   这个16是什么意思

J&#160; 代表返回值是64位的long型,所以必须用 &#160;const-wide&#160; 构造返回值,而不能用普通的 &#160;const&#160;
选择 &#160;/16&#160; 是因为要返回的数值 &#160;1&#160; 完全在16位有符号整数的表示范围内,使用 &#160;const-wide/16&#160; 生成的指令最短(4字节),最紧凑高效
baiqaz 发表于 2026-3-2 08:54

感谢分享学习一下
AstoriaMalfoy 发表于 2026-6-19 23:30
感谢分享,支持一下大佬
eesd0929 发表于 2026-7-30 11:02

感谢分享,支持一下大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-5 07:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表