学习com.mxbc.mxsa过程

一、抓包

        第一步依然是抓包,我们使用花瓶,随便获取一个请求,发现加密参数sign,然后我们把请求转成python代码

import requests

headers = {
    'app': 'mxbc',
    'appchannel': 'xiaomi',
    'appversion': '3.3.4',
    'Content-Type': 'application/json; charset=UTF-8',
    'Host': 'mxsa.mxbc.net',
    'User-Agent': 'okhttp/4.4.1',
}

json_data = {
    'distance': '10',
    't': 1721305014995,
    'latitude': '39.993754',
    'appId': 'ba660596c1d911ebabac005056883e3e',
    'limit': 10,
    'sign': 'FhD5mRou5mV3dx_toUf0eOOO5XOHfanFzlAPBRdBzegzjBK7VQwJyE-sXtLYlld3hYD_H4Qv9Zt9xAtVopS_XzJLhD81Rk9xv8bH3wNpX8nAwoNqRVEaLPnxjDA7Um-mBxDhwRxVJWI-yfx9612ByODsiZarP_fFOAU1TF3T1gZCt-Hhq1SDDGfih_7KCW8o-aq6gb3iLN1cNgSaH_FwM9CW3KFKreLBz2II3JYf3Zd65UZ_DUuBeQj7UxZ_jniRE6UbBn6XH3kFGA6bknvTfgAyqEQdm-VTY1l8x9zhPztqGZ-KliyY68per5O64YZ5faQRDx_TOkJpvYWCMSihQg==',
    'page': 1,
    'longitude': '116.304482',
}

response = requests.post('https://mxsa.mxbc.net/api/v2/shopinfo/findNear', headers=headers, json=json_data)

二、分析算法

        上面加密结果我们已经知道是base64加密了,可以使用自吐脚本,也可以分析java代码。很遗憾,对方的代码加壳了,我们首先进行脱壳吧,然后使用jadx分析、搜索。

排除前面结果第三方SDK,我们很快发现可以的类,objection hook一下确实使用了这个类。然后我们hook一下具体的方法,也就定位到加密了。

三、还原

        

public static String a(String str) {
        PatchProxyResult proxy = PatchProxy.proxy(new Object[]{str}, null, changeQuickRedirect, true, 5559, new Class[]{String.class}, String.class);
        if (proxy.isSupported) {
            return (String) proxy.result;
        }
        try {
            if (TextUtils.isEmpty(c)) {
                c = (String) ((SerializableService) com.mxbc.service.e.a(SerializableService.class)).deserializeBase64(g.b(false));
            }
            PrivateKey generatePrivate = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(Base64.decode(c, 2)));
            Signature signature = Signature.getInstance("SHA256withRSA");
            signature.initSign(generatePrivate);
            signature.update(str.getBytes());
            return Base64.encodeToString(signature.sign(), 8);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

我们把代码直接翻译成python,然后验证一下,万全一样。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

v(z_xiansheng88)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值