转转 APP zzreqsign 分析

声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
逆向分析

版本 11.5.5

现在AI真的有点太猛了,把so文件直接全部喂给他,直接还原算法。首先思路是直接搜关键字是可以搜到的,但是怎么向上追。可以通过打印堆栈。

SignUtil.getSign.overload('java.util.Map').implementation = function (map) {
    console.log('===================SignUtil.getSign.overload(\'java.util.Map\').implementation==============================')
    var treeMap = Java.use('java.util.LinkedHashMap')
    console.log('map:', Java.cast(map, treeMap))
    var result = this.getSign(map)
    console.log('result:', result)
    return result
}
SignUtil.getDeviceId.implementation = function () {
    console.log('===================SignUtil.getDeviceId.implementation==============================')
    var result = this.getDeviceId()
    console.log('result:', result)
    return result
}

算法demo 全是ai写的。删除了部分代码防止被线下单杀。

import hashlib

def get_sign(input_str, device_id):
    # 检查输入参数
    if not input_str or not device_id:
        return None

    # 模拟应用签名验证(此处假设验证通过)
    app_sign_sha1 = get_app_sign_sha1()
    if app_sign_sha1 != "expected_app_sign":
        return None

    # 将输入字符串和设备ID转换为UTF-8字节数组
    input_bytes = input_str.encode('utf-8')
    device_id_bytes = device_id.encode('utf-8')

    input_len = len(input_bytes)
    device_len = len(device_id_bytes)

    # 初始化结果数组,长度为输入字节数组的长度
    result_bytes = bytearray(input_len)

    # 按照C++逻辑进行异或操作
 

    # 拼接固定字符串并计算MD5
    
    md5_hash = hashlib.md5(result_bytes).hexdigest()

    return md5_hash

def get_app_sign_sha1():
    # 模拟正确的应用签名
    return "expected_app_sign"

# 示例用法
input_str = "a%3Dbc%3Ddkeyword%3D%E5%8C%85%E8%87%80%E8%A3%99"
device_id = ""
sign = get_sign(input_str, device_id)
print("Sign:", sign)

结果

总结

  1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wx a15018601872

wx a15018601872

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

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

打赏作者

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

抵扣说明:

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

余额充值