攻防世界-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动态调试应该也是可以的。

相关推荐
·云扬·17 分钟前
MySQL四大系统库详解:作用、核心表与实用SQL查询
android·sql·mysql
普马萨特17 分钟前
移动网络信号指标与单位整理(2G/3G/4G/5G Android vs IoT)
android·网络·物联网
de之梦-御风26 分钟前
【电视投屏】针对“局域网投屏开源项目(Android 手机 ↔ Android TV)
android·智能手机·开源
threelab42 分钟前
Merge3D 三维引擎中 GeoJSON 数据加载的整体设计
android·3d
优选资源分享1 小时前
Escrcpy 便携版 v2.0.0:安卓手机电脑同屏软件
android·智能手机·电脑
2501_915918412 小时前
介绍如何在电脑上查看 iPhone 和 iPad 的完整设备信息
android·ios·小程序·uni-app·电脑·iphone·ipad
TheNextByte12 小时前
如何通过蓝牙将照片从 iPhone 分享到Android ?
android·gitee·iphone
2501_916008892 小时前
没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
android·macos·ios·小程序·uni-app·iphone·webview
Android系统攻城狮4 小时前
Android ALSA进阶之处理PCM的ioctl命令snd_pcm_lib_ioctl:用法实例(一百)
android·pcm·alsa·音频进阶
数据皮皮侠AI12 小时前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节