能力值:
( LV12,RANK:270 )
|
-
-
2 楼
很明显你改错了~~~估计是寄存器用错了吧。
把修改内容和上下文发上来看看
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
sput v0, Lcom/c/a/c/c;->p:I
const-wide/32 v118, 0xf4240
sput v118, Lcom/c/a/c/c;->p:I
我就加了后两句 也就是想改下 Lcom/c/a/c/c;->p这个变量...
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
应该是v118用错了,寄存器数量在method开始都是定义好的,不能随便用啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
在每个函数的开始,会声明使用局部变量的个数
.method public constructor <init>()V
.locals 1
比如这里是1,那么只能使用v0。
所以你v118, locals这里至少要117
一般都不会改这么大,而是找一个下面会重新赋值的变量
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
这是原来的代码:
move-result v0
sput v0, Lcom/c/a/c/c;->p:I
我修改过后的代码:
move-result v0
const-wide/32 v0, 0xf4240
sput-wide v0, Lcom/c/a/c/c;->p:I 或者 sput v0, Lcom/c/a/c/c;->p:I
都一样 都报同样的错误:java.lang.VerifyError: com/c/a/c/c
|
能力值:
( LV3,RANK:30 )
|
-
-
7 楼
把我修改的还原再编译运行又完全不会有问题~~~ 会不会是它本身有什么保护机制?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
原来是sput, 你用sput-wide应该是有问题的
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
- -用 sput也是一样的,我一开始就是用的sput - -,发现不行才用的sput-wide。结果涛声依旧~~~
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
move-result v0
sput v0, Lcom/c/a/c/c;->p:I
const/16 v0, 0x1000
sput v0, Lcom/c/a/c/c;->p:I
改成这样ok了 应该是类型用错了~~~
|
|
|