车智赢app破解

原文件下载路径:
【移动安全与逆向工程】车智赢App登录功能逆向分析:抓包、反编译与Hook技术应用
【移动安全与逆向工程】day14-车智赢app破解代码
【移动安全与逆向工程】day14-车智赢所需软件及插件

说明:文中所示案例仅供学习使用,请勿进行商业用途!!!

今日内容

1 app版本选择和逆向流程

1.1 今日目标

# 1 车智赢+ app---》登录功能
# 2 学习到的
	1 选择app版本安装到手机
    2 抓包
    3 分析登录包请求,逆向
    4 使用jadx反编译apk,阅读java代码
    5 寻找关键字+Hook验证
    6 python还原算法
    
# 3 下载app
	-官网:https://icloud.che168.com/login.html
    -下载地址:https://appdownload.che168.com/usedcar/csy/index.html?pvareaid=106101
    - 3.56.0版本

2 抓包分析

2.1 配置

# 1 把app安装到手机上
adb install  软件位置/xx.apk

# 2 【电脑端】打开charles
	
# 3 手机端配置代理-如下图

# 4 电脑端配置能抓取https的包,如下图

# 5 打开车智赢app,操作登录,实现抓包

# 6 抓包详情:
	-请求地址
    	https://dealercloudapi.che168.com/tradercloud/sealed/login/login.ashx
    -请求方式
    	POST
    -请求头
    	traceid:改包测试
    -请求体
    	_appid	atc.android  #固定的
        _sign	B0FB9AE0B66383288C8AEEEF6854DDFF  # 需要破解
        appversion	3.56.0   # app版本,固定的
        channelid	csy      # 固定的
        pwd	e10adc3949ba59abbe56e057f20f883e # 密码加密
        signkey	  # 空的
        type	  # 空的
        udid	iEavSW4QycaRf6qULa18YDJEOmuw10SBwdVu62EN/1/8eh46NzxTYDzG4oXl ZM0F6oKAPatKB4XyzJ9zIhTrdg== # 需要破解
        username	18952452114 # 我们的账号
        
        
 # 7 破解目标
	1 密码加密
    2 _sign :签名--》把请求体整体签名--》请求体改任意位置,签名都会错误
    3 udid

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3 反编译

# 1 jadx打开apk
# 2 搜索关键字:
	pwd    "pwd"     "pwd
    搜网址:https://dealercloudapi.che168.com/tradercloud/sealed/login/login.ashx
    /login/login.ashx
    
# 3 找到谁使用了常量:LOGIN_URL--》右键--》查找用例
	-一个位置,双击进入
    
# 4 找到代码:
builder.tag(str).method(HttpUtil.Method.POST).signType(1).url(LOGIN_URL).param("username", str2).param("type", str4).param("signkey", str5).param("pwd", SecurityUtil.encodeMD5(str3));

# 5 找到:param("pwd", SecurityUtil.encodeMD5(str3))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4 逆向

4.1 搜索登录接口

上面到的笔记

4.2 破解密码加密

# 1 SecurityUtil.encodeMD5(str3)
# 2 看之前先猜一下:就是md5签名
	1 明文:123456
    2 加密后:e10adc3949ba59abbe56e057f20f883e
    
# 3 继续看源代码--》就是md5
public static final String encodeMD5(String str) {
   
    char[] cArr = {
   '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    try {
   
        // 1 把明文字符串转成bytes格式
        byte[] bytes = str.getBytes();
        // 2 拿到一个md5对象
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        // 3bytes格式的数据,使用md5签名
        messageDigest.update(bytes);
        // 4 得到签名结果--bytes格式
        byte[] digest = messageDigest.digest();
        char[] cArr2 = new char[digest.length * 2];
        // 5 把签名后的结果转成16进制--》大写
        int i = 0;
        for (byte b : digest) {
   
            int i2 = i + 1;
            cArr2[i] = cArr[(b >>> 4) & 15];
            i = i2 + 1;
            cArr2[i2] = cArr[b & bx.m];
        }
        // 6 转成小写返回   python--->md5.hexdegist()
        return new String(cArr2).toLowerCase();
    } catch (Exception e) {
   
        e.printStackTrace();
        return null;
    }
}


# 4 不确定 登录 是否真的会走它,通过hook确定一定会走
	-写个hook脚本,hook脚本正常打印,说明走了它

4.2.1 hook密码加密

# 1 手机端开启frida-server
	adb shell
    su
    cd /data/local/tmp
    ls
    ./frida-server-16.3.3-android-arm64
# 2 电脑端做端口转发
	-运行python脚本
# 3 写hook脚本运行
#### 3 运行hook代码
import fri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逐梦舞者

你的打赏是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值