吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 800|回复: 5
收起左侧

[Android 求助] java使用Serializable序列化对象时,如何手动改写成员变量的值?

  [复制链接]
du1263794094 发表于 2024-4-22 16:01
本帖最后由 du1263794094 于 2024-4-22 16:05 编辑

如下图,名为NCCPackage的类实现了java.io.Serializable接口,且大量成员变量可序列化
NCCPackage.JPG

我想将部分可序列化的成员变量的值进行修改,如bought, expired, expiresat等成员变量,可是这个类中没有getBought(), setBought(), getExpired(), setExpired()方法,该怎么呢?

附上图java代码对应的smali代码图,和抓包返回数据(已重写)

NCCPackageSmali.png
抓包返回数据1.jpg

免费评分

参与人数 1吾爱币 +1 收起 理由
yunchu + 1 谢谢@Thanks!

查看全部评分

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

黄色土豆 发表于 2024-4-22 16:40
都是 public 修饰符,直接 NCCPackage.bought = false ,这样不行?
 楼主| du1263794094 发表于 2024-4-22 17:34
黄色土豆 发表于 2024-4-22 16:40
都是 public 修饰符,直接 NCCPackage.bought = false ,这样不行?

我直接在成员变量后面赋值,保存时报错,提示initial field values can only be specified for static fields 初始化字段的值只能在他是静态字段的情况下才能具体化,于是我添加了静态修饰,再赋值,如 .field public static bought:Z = true,成功保存,软件启动时闪退了,logcat的日志如下,大概意思是找不到类了
exception.JPG
黄色土豆 发表于 2024-4-22 17:48
du1263794094 发表于 2024-4-22 17:34
我直接在成员变量后面赋值,保存时报错,提示initial field values can only be specified for static fi ...

你赋值的哪些变量?都是基本类型的吗,有对象类型的变量吗?
 楼主| du1263794094 发表于 2024-4-22 17:59
黄色土豆 发表于 2024-4-22 17:48
你赋值的哪些变量?都是基本类型的吗,有对象类型的变量吗?

我只在NCCPackage这个类里赋值了基本数据类型的成员变量,如boolean int long 这些,其他对象型的成员变量是在NCCPackage的内部类里完成赋值的,我没有动。另外内部类的成员变量是用Parcelable实现赋值的, 那个主要在Parcel.read的方法修改返回值,应该不难,问题在于这个Serializable这里不知道怎么改
zhuxiangyu1024 发表于 2024-4-23 12:50
哪里调用在哪里修改,改这个类成员变量没有什么用,json解析的时候就覆盖了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 00:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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