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

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

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

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

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

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