首页
社区
课程
招聘
[求助]修改smali后报错...
2014-12-2 15:21 8155

[求助]修改smali后报错...

2014-12-2 15:21
8155
修改smali文件编译后运行报错 java.lang.VerifyError: com/c/a/c/c
不修改又可以正常运行... 新手求教这是啥情况

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
QEver 5 2014-12-2 15:25
2
0
很明显你改错了~~~估计是寄存器用错了吧。
把修改内容和上下文发上来看看
雪    币: 59
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
余冬冬 2014-12-2 15:27
3
0
    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这个变量...
雪    币: 22
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SFQin 2014-12-2 15:43
4
0
应该是v118用错了,寄存器数量在method开始都是定义好的,不能随便用啊。
雪    币: 54
活跃值: (620)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chmlqw 2014-12-2 15:45
5
0
在每个函数的开始,会声明使用局部变量的个数
.method public constructor <init>()V
    .locals 1
比如这里是1,那么只能使用v0。

所以你v118, locals这里至少要117
一般都不会改这么大,而是找一个下面会重新赋值的变量
雪    币: 59
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
余冬冬 2014-12-2 15:59
6
0
这是原来的代码:
    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
雪    币: 59
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
余冬冬 2014-12-2 16:05
7
0
把我修改的还原再编译运行又完全不会有问题~~~ 会不会是它本身有什么保护机制?
雪    币: 22
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SFQin 2014-12-2 16:06
8
0
原来是sput, 你用sput-wide应该是有问题的
雪    币: 59
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
余冬冬 2014-12-2 16:08
9
0
- -用 sput也是一样的,我一开始就是用的sput - -,发现不行才用的sput-wide。结果涛声依旧~~~
雪    币: 59
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
余冬冬 2014-12-2 16:12
10
0
    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了 应该是类型用错了~~~
游客
登录 | 注册 方可回帖
返回