首页
社区
课程
招聘
[求助]程序闪退:Verifier rejected class Lorg/cocos2dx/a/a; Shutting down VM
发表于: 2013-9-24 22:03 14424

[求助]程序闪退:Verifier rejected class Lorg/cocos2dx/a/a; Shutting down VM

2013-9-24 22:03
14424
今天修改一个apk,没有干什么 只是简单的修改0和1,解包,回编都没有问题
但是在程序运行的时候 秒退
其输入的log日志 主要如下:

09-24 21:48:22.390: W/dalvikvm(1869): VFY:  rejecting opcode 0x69 at 0x0001
09-24 21:48:22.390: W/dalvikvm(1869): VFY:  rejected Lorg/cocos2dx/a/a;.<clinit> ()V
09-24 21:48:22.390: W/dalvikvm(1869): Verifier rejected class Lorg/cocos2dx/a/a;
09-24 21:48:22.390: D/AndroidRuntime(1869): Shutting down VM
09-24 21:48:22.390: W/dalvikvm(1869): threadid=1: thread exiting with uncaught exception (group=0x3081d560)

该输出的日志 所检测到的正是我修改的代码,我只是简单的修改0和1 不应该会让程序闪退
我特意搜了一下资料
其中有一段 老外说道:
地址:
http://code.google.com/p/zxing/issues/detail?id=153

I think I finally found the issue -- it didn't like a class accessing private
constructors of inner classes. These are technically visible, and not sure whether
it's a ProGuard issue or Dalvik being picky or what, but the workaround is simple,
just make those constructors package-visible.


最后一句大概意思 就是:这里有一个最简单的方法,就是让这些构造方法 对包可见
话说什么是对包可见? java默认的方法 难道不是对包可见吗?
求各位大牛帮忙解决
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
申请一下 这个apk 我已经去掉了 他的自校验,但是不排除 还有潜在的自校验
一般情况下 像签名校验 什么的 都没有问题
严重怀疑 就代码完整性的校验  只是他是怎么实现的呢》?
2013-9-24 22:09
0
雪    币: 77
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
是不是你改了dex文件以后没有对它进行修复啊,这个是dalvikvm的log啊
2013-9-25 09:26
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个不是自校验。 是生成的类出 问题了。 原因暂时还不知道  @claud 大牛来看看。
2013-9-25 10:02
0
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
直接贴你改的代码吧。应该是修改代码的问题。
2013-9-25 10:27
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
当前的问题已经解决 是我修改代码的问题

invoke-static {}, Lorg/cocos2dx/lib/be;->p()Ljava/lang/String;

    move-result-object v0

    const v0,0x1

    if-eqz v0, :cond_0

    const-string v1, "46000"

    invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v1

p()方法返回的字符串,而我直接把返回值改为0x1 因此产生了异常
谢谢各位

但是马上又来一个问题

代码如下:

# direct methods
.method static constructor <clinit>()V
    .locals 1

    const/4 v0, 0x0

    sput-object v0, Lorg/cocos2dx/a/a;->a:Lorg/cocos2dx/a/a;

    const/4 v0, 0x0

    sput-boolean v0, Lorg/cocos2dx/a/a;->c:Z

    return-void
.end method
在构造函数中  我把第一行的  const/4 v0, 0x0修改为0x1,同样的问题再次出现 又是闪退
其log为:
09-25 11:13:48.850: W/dalvikvm(2230): VFY: storing non-ref v0 into ref field 'a' (Lorg/cocos2dx/a/a;)
09-25 11:13:48.850: W/dalvikvm(2230): VFY:  rejecting opcode 0x69 at 0x0001
09-25 11:13:48.850: W/dalvikvm(2230): VFY:  rejected Lorg/cocos2dx/a/a;.<clinit> ()V
09-25 11:13:48.850: W/dalvikvm(2230): Verifier rejected class Lorg/cocos2dx/a/a;
09-25 11:13:48.850: D/AndroidRuntime(2230): Shutting down VM
09-25 11:13:48.850: W/dalvikvm(2230): threadid=1: thread exiting with uncaught exception (group=0x3081d560)
2013-9-25 11:15
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
问题已经修复 谢谢各位  请参考6L
2013-9-25 11:16
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
第一个问题 已经解决  但是第二个问题我就不明白了 同样是整型  怎么会错误呢?
2013-9-25 11:20
0
雪    币: 53
活跃值: (275)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
const/4 v0, 0x0
sput-object v0, Lorg/cocos2dx/a/a;->a:Lorg/cocos2dx/a/a;

你把一个4位整数赋值给Lorg/cocos2dx/a/a的Lorg/cocos2dx/a/a对象,不合理啊
v0并不是一个a类型的object
2013-9-25 13:09
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
0x0是原始代码,既然0x0能够成功,为何0x1就不行?
2013-9-25 13:52
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
好吧 应该是这样
0x0代表空对象。而0x1 对象就不知道是什么东西了 因此bug了
多谢了
2013-9-25 13:59
0
游客
登录 | 注册 方可回帖
返回
//