安卓逆向案例分析之蝉妈妈sign破解

 更新时间:2022年02月10日 14:39:49   作者:别None了  
这篇文章主要为大家介绍了安卓逆向案例分析蝉妈妈sign破解的方式讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

前言

蝉妈妈app v2.6.1 安卓逆向分析之sign破解

提示:以下是本篇文章正文内容,下面案例可供参考

1.抓包

在这里插入图片描述

接口: https://api-service.chanmama.com/v1/douyin/live/rank/realtime

由图可见Headers中关键参数sign

2. 定位分析

2.1 package

在这里插入图片描述

package=‘com.chandashi.chanmama’

第一步先获取package为下一步hook分析做准备

2.2 jadx-gui

打开jadx-gui 将蝉妈妈.apk拖进去等待片刻,搜索关键词:“sign”,

结果如下: 关键代码arrayMap.put(“sign”, x.R0(sb2, “cmmad!@@#”));

由此可见 sign = x.R0(sb2, “cmmad!@@#”),

在这里插入图片描述

咱们直接看 x.R0()函数代码

在这里插入图片描述


jadx代码如下:

    public static String R0(@NonNull String str, String str2) {
        if (TextUtils.isEmpty(str)) {
            return "";
        }
        try {
            String str3 = "";
            for (byte b2 : MessageDigest.getInstance("MD5").digest((str + str2).getBytes())) {
                String hexString = Integer.toHexString(b2 & 255);
                if (hexString.length() == 1) {
                    hexString = MessageService.MSG_DB_READY_REPORT + hexString;
                }
                str3 = str3 + hexString;
            }
            return str3;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return "";
        }
    }

3. hook

Frida代码如下:

import frida, sys
def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)
jscode_hook = """
    Java.perform(
        function(){
            var class_obj = Java.use("d.j.d.x");
            console.log(class_obj);
            if (class_obj != undefined) {
                class_obj.R0.overload('java.lang.String', 'java.lang.String').implementation = function (s1, s2) {
                    console.log("参数1: ---> "+ s1);
                    console.log("参数2: ---> "+ s2);
                    var res = this.R0(s1, s2);
                    console.log("加密: ---> "+res);
                    return res;
                }
            }
        }

    )
"""
process = frida.get_usb_device().attach('com.chandashi.chanmama')
script = process.create_script(jscode_hook)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
sys.stdin.read()

在这里插入图片描述

str1 = “YqH3DGpu1644394648003” YqH3DGpu+毫秒级时间戳
str2 = “”
结果 md5(str1)最后转大写

总结

加密都在java层且是标准md5,大家有兴趣可以动手做下。

以上就是安卓逆向案例分析之蝉妈妈sign破解的详细内容,更多关于安卓逆向蝉妈妈sign破解的资料请关注脚本之家其它相关文章!

相关文章

  • Android Retrofit文件下载进度显示问题的解决方法

    Android Retrofit文件下载进度显示问题的解决方法

    这篇文章主要为大家详细介绍了Android Retrofit文件下载进度显示问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android 获取屏幕尺寸实例代码

    Android 获取屏幕尺寸实例代码

    这篇文章主要介绍了Android 获取屏幕尺寸实例代码的相关资料,需要的朋友可以参考下
    2017-06-06
  • 详解Android 中的文件存储

    详解Android 中的文件存储

    这篇文章主要介绍了Android 中的文件存储的相关资料,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • Android SQLite数据库基本操作方法

    Android SQLite数据库基本操作方法

    本篇文章主要介绍了Android SQLite数据库基本操作方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Android使用RadioGroup实现底部导航栏

    Android使用RadioGroup实现底部导航栏

    这篇文章主要为大家详细介绍了Android使用RadioGroup实现底部导航栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android+OpenCV4.2.0环境配置详解(Android studio)

    Android+OpenCV4.2.0环境配置详解(Android studio)

    这篇文章主要介绍了Android+OpenCV4.2.0环境配置详解(Android studio),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android开发学习路线的七大阶段

    Android开发学习路线的七大阶段

    这篇文章主要介绍了Android开发学习路线的七大阶段,本文讲解了Java面向对象编程、Java Web开发、android UI编程、android网络编程与数据存储、android手机硬件管理等七大阶段,需要的朋友可以参考下
    2015-04-04
  • Ubuntu中为Android简单介绍硬件抽象层(HAL)

    Ubuntu中为Android简单介绍硬件抽象层(HAL)

    本文主要介绍在Android 的硬件抽象层,学习Android 硬件抽象层(HAL)对理解整个Android都是有非常大的作用,有兴趣的小伙伴可以参考下
    2016-08-08
  • Android实现从网络获取图片显示并保存到SD卡的方法

    Android实现从网络获取图片显示并保存到SD卡的方法

    这篇文章主要介绍了Android实现从网络获取图片显示并保存到SD卡的方法,涉及Android操作多媒体文件及系统硬件设备的相关技巧,需要的朋友可以参考下
    2015-12-12
  • 基于SurfaceView实现可拖动视频控件

    基于SurfaceView实现可拖动视频控件

    这篇文章主要为大家详细介绍了基于SurfaceView的可拖动视频控件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论