首页
社区
课程
招聘
[求助]安装crackme0502_cracked2.apk显示Unfortunately, crackme0502 has stopped
发表于: 2018-12-14 13:46 2904

[求助]安装crackme0502_cracked2.apk显示Unfortunately, crackme0502 has stopped

2018-12-14 13:46
2904
本人根据《Android软件安全与逆向分析》中第135页上半页的内容进行实验。
将isRegistered()方法的第二条指令改为“return v9”,然后将两处killProcess()的调用改成一连串的nop
patch过的dex经过010 Editor对比,和非虫版主发布的cracked2_classes.dex的代码段一致,说明patch没有出问题
然后将dex修复后放入apk中,签名安装apk成功。但是打开app一直闪退,显示Unfortunately, crackme0502 has stopped
通过Logcat查看到如下错误:

2017-01-10 12:29:54.003 12392-12392/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.droider.crackme0502, PID: 12392
    java.lang.VerifyError: Verifier rejected class com.droider.crackme0502.MainActivity$SNChecker: boolean com.droider.crackme0502.MainActivity$SNChecker.isRegistered() failed to verify: boolean com.droider.crackme0502.MainActivity$SNChecker.isRegistered(): [0x2] register v9 has type Imprecise Constant: 127 but expected Boolean return-1nr on invalid register v9 (declaration of 'com.droider.crackme0502.MainActivity$SNChecker' appears in /data/app/com.droider.crackme0502-1/base.apk)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
        at com.droider.crackme0502.MyApp.onCreate(MyApp.java:19)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5405)
        at android.app.ActivityThread.-wrap2(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1546)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6121)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

关键在于

register v9 has type Imprecise Constant: 127 but expected Boolean return-1nr on invalid register v9

本人再尝试直接安装非虫版主亲自制作的crackme0502_cracked2.apk,也发现有如上闪退错误

Android版本试过两个,4.1和7.1.2,都会出现如上错误。

可以通过Android Emulator安装Android 4.1固件再安装附件中的apk来复现该问题。

请问非虫版主是如何解决的?为什么会出现如上问题?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-12-14 21:53 被crownless编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 3094
活跃值: (314)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
2
随便看了下,好像是isRegistered()函数的返回是要bool类型,但第一行将v9赋值为了0x8,导致返回出错了,我改了下第一行就不报错了。但为啥只有部分系统有影响,这我就不知道了..
2018-12-14 15:02
0
雪    币: 2282
活跃值: (426)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
kwanhua 随便看了下,好像是isRegistered()函数的返回是要bool类型,但第一行将v9赋值为了0x8,导致返回出错了,我改了下第一行就不报错了。但为啥只有部分系统有影响,这我就不知道了..
请问您把第一行改成什么指令了?
2018-12-14 19:01
0
雪    币: 2282
活跃值: (426)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4

实验了一下,第一行指令需要改成

const/16 v9, 1
1代表boolean类型的true值
本来以为将v9赋值为0x8,是一个非0值也能代表true,现在看来dalvik虚拟机还带有一定的类型推断功能,boolean类型只能取值0或1
2018-12-14 21:52
0
游客
登录 | 注册 方可回帖
返回
//