本帖最后由 du1263794094 于 2024-6-4 18:38 编辑
手上的软件里,有一个类是封装对象类,我想在获取这个类的实例的其他方法里改写代码,将获取实例的方法,改为我自己写的返回实例的方法(当然这个实例的某些属性也被我修改了),于是我在封装对象类里写了一个getModel方法,并对部分成员变量的值作了修改,最后返回一个对象,smali代码如下
[Java] 纯文本查看 复制代码
.method public getModel()Lcom/aabb/aabbcc/aabbccdd/model/device/Model;
.registers 5
new-instance v0, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;
invoke-direct {v0}, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;-><init>()V
const-wide/16 p0, 0x0
iput-wide p0, v0, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;->remainValue:D
const-string v1, "2020-08-17 16:16:42"
iput-object v1, v0, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;->createTime:Ljava/lang/string;
const-string v2, "管理员"
iput-object v2, v0, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;->creator:Ljava/lang/string;
const-string v3, "大帅与小美"
iput-object v3, v0, Lcom/aabb/aabbcc/aabbccdd/model/device/Model;->name:Ljava/lang/string;
return-object v0
.end method
但是运行时报错了,logcat日志显示
[Java] 纯文本查看 复制代码
getModel(): [0xFFFFFFFF] wide register index out of range (4+1 >= 5)
我自己的理解是寄存器数量不足造成的,那么把寄存器数量改多一些就能解决了?我只找到一个遇到相同问题的网页,但是那里没有解决问题的回答,所所以发帖请大佬解答一下
附 遇到同样问题的外网提问帖链接 https://stackoverflow.com/questions/58603066/smali-wide-register-index-out-of-range |