新手向—高级计算器破解

查看 145|回复 11
作者:13200   
新手向—高级计算器破解
2021年8月28日
简介
最近在论坛看到一款卡西欧高级计算器,当初在初中可是被誉为神器,没想到有手机版
原帖中有破解思路,所以萌新我不妨来试试
原帖:https://www.52pojie.cn/thread-1499562-1-1.html
APP
从play商店下载后用skit把安装包导出,得到CalcES (5.2.9.702).apk
谷歌原版安装包,蓝奏:https://wwa.lanzoui.com/ipAa8ta09ve
支持正版,不提供成品下载
打开,发现高级版需要购买,嘿嘿嘿

Crake步骤
找一些关键词:lifetime purchase ,高级,广告,theme,license,free,plus,premium,pro,……
中文有可能是Unicode编码
用论坛的androidkiller反编译apk
求助大佬们现在有没有比ak更好用的工具
搜索下上面提到的一些关键词,点进去观察下,发现premium比较可疑

看搜索结果

res中多为一些资源文件,string name是不是很熟悉

smali advanced中猜测是一些解锁后高级功能的程序

一个一个点进去发现这个比较可疑

有跳转而且附近还有一个“free”

观察逻辑发现if-else中调用的函数都是相同的,唯一的不同点就是premium和free
可以直接改字,或者将if  --> if not

编译
出大问题,没报错但是编译失败
具体输出:https://txtpad.cn/apktoolbuildfailure
看上去大多数是资源问题

试过apktool版本后,发现需要编译时需要忽略资源(似乎是反编译导致xml乱码)
双击加个参数 -r


重新反编译后编译成功,但是没有解锁
但是没有实现crake,回到刚刚的代码

分支是通过判断 v1的,看起来判断后的内容并不是关键,有可能只是界面的显示功能,也可能其他地方也会判断v1的值

可以看到v1调用了f/b/h/i/e中的c函数返回的Boolean
找到c函数

打开后c函数详细内容
.method public static c(Landroid/content/Context;)Z
    .locals 3
    new-instance v0, Ljava/io/File;
    invoke-virtual {p0}, Landroid/content/Context;->getFilesDir()Ljava/io/File;
    move-result-object v1
    const-string v2, "license"
    invoke-direct {v0, v1, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V
    invoke-virtual {v0}, Ljava/io/File;->exists()Z
    move-result v1
    if-eqz v1, :cond_0
    invoke-static {v0}, Lf/b/h/i/e;->e(Ljava/io/File;)Ljava/lang/String;
    move-result-object v0
    if-eqz v0, :cond_0
    invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z
    move-result v1
    if-nez v1, :cond_0
    invoke-static {v0}, Le/u/m/g;->b(Ljava/lang/String;)Ljava/lang/String;
    move-result-object v0
    invoke-static {p0}, Lf/b/h/i/c;->a(Landroid/content/Context;)Ljava/lang/String;
    move-result-object p0
    invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    move-result p0
    return p0
    :cond_0
    const/4 p0, 0x0
    return p0
.end method
函数大致意思应该是判断一个license文件及内容,发现有很多cond_0,一系列的判断失败都return 0,简单粗暴直接改为检查失败return 1
const/4 p0, 0x1
编译安装试试
编译签名安装成功
可以看到激活已经没有了

总结
很简单的一个app尝试,关键点比较好找,但在实践中出现的一些问题加深了我的理解,发出来给大家乐呵乐呵
难点和疑问
  • ak好像比较老了,有什么新的好用工具吗
  • 有什么好方法定位关键点
  • 代码的结构和一些方法名似乎经过混淆了,能通过一定的特征知道混淆的方法吗

    使用方法
    shift对应按键左上标功能,alpha对应右上角字母运算符

    还有好多功能,编程都有,不过有些功能需要外网


    函数, 发现

  • 13200
    OP
      


    Tamluo 发表于 2021-8-30 18:30
    好像看到发过类似的了?不过还是感谢分享

    有人发过app的成品,我只是把过程记录了下,在开头我写了原帖地址
    Tamluo   


    13200 发表于 2021-8-30 18:58
    有人发过app的成品,我只是把过程记录了下,在开头我写了原帖地址

    嗯嗯,挺好的,支持
    cjc3528   

    很牛逼的教程啊,谢谢分享,学习了
    CCQc   

    52破解,感谢大佬的分享
    sgsb   

    感谢分享。学习了。
    chendaxia666   

    厉害了,大师
    wangzhu3366   

    有人已经发过了
    Williamli2006   

    这个厉害,学习了!
    MZA1220   

    这个厉害,学习了
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部