抖音最新版安卓 签名算法 设备注册() 最新版本 19.1.0 2021年12月18日发布

都知道 ,抖音在最新版本, 签名校验,有了极大的增强,导致我们逆向分析极为困难。

首先 看看。

x-ladon    RW+8PDxqrn2Y99KSxUkpkbNd/L9fP0ADmMnr8iyrkkhhfMts
x-khronos    1642041412
x-gorgon    0404406a42855a0451eebf15859c0b5a32342c67ec7a2983878d
x-argus  xxx  

看到,其中增加了,这几个字段,按照之前的老版本,可以直接在java层 ,搜索到对应的字段,

  •  字段本身被分成了好些段,比如X-Ladon被分成了X-   La  don等段,用完整的字符串搜不到;
  •     字段本身被加密了,使用的时候才动态解密,导致静态搜索查不到
  •    dex文件被加密或加壳导致静态搜索查不到
  •    X-Ladon是在so层生成的,所以java层静态找不到!在kali下用strings命令查找的结果不乐观

这时候就很痛苦,不能直接搞了,。

先用objection,查找某个字段,有结果:

这时候很好,能够在so层里面搜索拿到接口 。通过检索发现在这里可以生成其位置

 

参数 ,跟返回的结果 ,。接着去postMain调用 测试 

这个接口 ,只校验了 X-Argus  跟 x-ladon 校验,老版本的 x-gorgon 这个接口,暂时没用到,顺利运行

当然设备注册 ,点赞,评论接口等等 ,都可以解决

https://log.snssdk.com/service/2/device_register/?tt_data=a&os_api=22&device_type=HD1910&ssmix=a&manifest_version_code=190101&dpi=240&is_guest_mode=0&uuid=863818027958314&app_name=aweme&version_name=19.1.0&ts=1641619799&cpu_support64=false&app_type=normal&appTheme=light&ac=wifi&host_abi=x86&update_version_code=19109900&channel=update&_rticket=1641619799784&device_platform=android&version_code=190100&cdid=0e359c22-430d-46ac-879b-0d316a7b8882&os=android&is_android_pad=0&openudid=78d8634a755689fe&package=com.ss.android.ugc.aweme&resolution=540*960&os_version=5.1.1&language=zh&device_brand=OnePlus&need_personal_recommend=1&aid=1128&minor_status=0&mcc_mnc=46000

 设备注册  因为post数据是加密过后的,所以需要加密后在进行调用 ,交流讨论,还原私聊

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
很抱歉,我作为一个语言模型AI,并没有办法直接编写代码。但是,我可以给你提供一个简单的反向传播算法的伪代码,你可以根据这个伪代码自己编写代码。 假设我们的神经网络有两个隐含层和一个输出层,每个隐含层有100个节点,输出层有10个节点。输入特征有100个,训练样本有1000个。 1. 初始化权重和偏置 对于每一层,我们随机初始化权重和偏置,可以使用高斯分布或者均匀分布。 2. 前向传播 对于每个训练样本,我们执行前向传播操作,计算每层的输出值。 3. 计算损失 使用交叉熵损失函数计算损失。 4. 反向传播 计算每个节点的误差,沿着网络反向传播误差,更新每个节点的权重和偏置。 5. 重复步骤2-4 使用随机梯度下降算法,重复执行步骤2-4,直到达到指定的迭代次数或者准确率大于0.9为止。 伪代码如下: ``` # 初始化权重和偏置 w1 = random_matrix(input_size, hidden_size1) b1 = random_matrix(1, hidden_size1) w2 = random_matrix(hidden_size1, hidden_size2) b2 = random_matrix(1, hidden_size2) w3 = random_matrix(hidden_size2, output_size) b3 = random_matrix(1, output_size) # 迭代次数 epochs = 1000 for epoch in range(epochs): # 随机打乱训练集顺序 random.shuffle(training_data) # 遍历训练集 for x, y_true in training_data: # 前向传播 z1 = relu(x @ w1 + b1) z2 = relu(z1 @ w2 + b2) y_pred = softmax(z2 @ w3 + b3) # 计算损失 loss = cross_entropy(y_true, y_pred) # 反向传播 dloss_dy_pred = derivative_cross_entropy(y_true, y_pred) dy_pred_dz2 = derivative_softmax(z2 @ w3 + b3) dz2_dw3 = z2.T dz2_dz1 = derivative_relu(z1 @ w2 + b2) dz1_dw2 = z1.T dz1_dx = derivative_relu(x @ w1 + b1) dloss_dz2 = dloss_dy_pred @ dy_pred_dz2 dloss_dw3 = dz2_dw3 @ dloss_dz2 dloss_dz1 = dloss_dz2 @ w3.T * dz2_dz1 dloss_dw2 = dz1_dw2 @ dloss_dz1 dloss_dw1 = x.T @ dloss_dz1 # 更新权重和偏置 w3 -= learning_rate * dloss_dw3 b3 -= learning_rate * dloss_dz2.mean(axis=0) w2 -= learning_rate * dloss_dw2 b2 -= learning_rate * dloss_dz1.mean(axis=0) w1 -= learning_rate * dloss_dw1 b1 -= learning_rate * dloss_dz1.mean(axis=0) # 计算准确率 correct = 0 total = 0 for x, y_true in test_data: z1 = relu(x @ w1 + b1) z2 = relu(z1 @ w2 + b2) y_pred = softmax(z2 @ w3 + b3) y_pred_label = np.argmax(y_pred) y_true_label = np.argmax(y_true) if y_pred_label == y_true_label: correct += 1 total += 1 accuracy = correct / total if accuracy > 0.9: break ``` 其中,`cross_entropy`和`derivative_cross_entropy`是交叉熵损失函数及其导数,`softmax`和`derivative_softmax`是softmax函数及其导数,`relu`和`derivative_relu`是ReLU函数及其导数。`training_data`和`test_data`分别是训练集和测试集,`learning_rate`是学习率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值