攻防世界-Ph0en1x-100

第一次独立使用frida解安卓题,没分析代码

Steps

  • 使用jadx打开apk分析主要代码

    • 最主要的就是这个if判断了,安装apk后,有一个输入框和一个check按钮,会根据输入的结果Toast:Success or Failed。
    • getSecret(getFlag()).equals(getSecret(encrypt(sInput))),判断getSecret(getFlag())getSecret(encrypt(sInput))的结果是否相同,其中sInput是输入。

    • getFlag()没有接收任何字符串,所以想到没必要分析代码写了什么,只需要看这个getSecret方法的输入和返回是多少就可以,这里想到了frida。

    • 分析一下getSecret方法

      • **byte**[] hash = MessageDigest.getInstance(encrypt("KE3TLNE6M43EK4GM34LKMLETG").substring(5, 8)).digest(string.getBytes("UTF-8"));
      • 这一句对输入进行加密,加密方法还要通过encrypt("KE3TLNE6M43EK4GM34LKMLETG").substring(5, 8)获取,写死的就证明加密也只是一个。这里开始想的是用frida看简单的输入的输出,判断是什么编码。
    • frida函数

      • jadx中右键getSecret函数-复制为frida代码,

      • 再加个Java.perform(function()运行函数

        Java.perform(function() {
        let MainActivity = Java.use("com.ph0en1x.android_crackme.MainActivity");
        MainActivity["getSecret"].implementation = function (string) {
        console.log('getSecret is called' + ', ' + 'string: ' + string);
        let ret = this.getSecret(string);
        console.log('getSecret ret value is ' + ret);
        return ret;
        };
        });

    • 打开frida-server

    • 在手机上点击check按钮,查看log信息。
    • 比如012编码后的结果试一下就可以得出进行的md5编码。

    • 然后可以看出getFlag()的返回是乱码,分析getSecret(getFlag()).equals(getSecret(encrypt(sInput)))得出,getFlag()encrypt(sInput))相等即可,而根据getSecret()的输入参数可知,这个过程仅仅对输入进行了ascii减一的操作,我们就可以对getFlag()的返回进行ascii加一的操作。

    • 得出flag的代码

      s = 'ekfz@q2^x/t^fn0mF^6/^rbqanqntfg^E`hq|'
      for i in range(0, len(s)):
      print(chr(ord(s[i])+1), end='')

  • 用IDA动态调试应该也是可以的。

相关推荐
张拭心6 分钟前
Android 17 来了!新特性介绍与适配建议
android·前端
Kapaseker2 小时前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
黄林晴3 小时前
Android17 为什么重写 MessageQueue
android
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android