一、__nstokensig签名
最近在学习android逆向,不足之处欢迎大佬多多指点。
这次分析的是快手极速版1.2.2.8,使用Fiddler抓包发现有2个签名,一个是__nstokensig和sig。
通过jadx-gui搜索字符串找到nstokensig算法,只在java层


这里我就不继续往下跟e.a了,实际上他就是判断编码的操作。通过上面第一层发现,是传递str和str2进行签名,接下来我们hook一下他的传参数据。

通过xposed hook观测得知,str是sig签名结果,str2是kuaishou.api_client_salt,也就是在快手登录之后返回的一个值,这个值后续包是抓不到的。只有登录的时候才有。
得到传参后,我们回到刚刚的第二层,发现他先用 sha-256 计算之后,还调用了d.a(),我们跟进去看即可拿到java层算法,直接抠出来即可。

以下就是扣好的nstokensig签名
// An highlighted block
public String getNsTokenSig(String sig,String token) throws NoSuchAlgorithmException {
String str2 = sig+token;
return new String(b(MessageDigest.getInstance("SHA-256").digest(str2.getBytes())));
}
private static char[] b(byte[] bArr) {

本文详细探讨了快手极速版中的两个签名算法:__nstokensig和sig。__nstokensig签名主要涉及str和str2,str2是登录后返回的kuaishou.api_client_salt。算法经过SHA-256计算和d.a()处理。sig签名则在SO层实现,通过Xposedhook观察到其参数包括Context、byte[]和int,主要操作是对两个Map进行合并和排序。通过Xposedhook获取参数值并调用SO函数完成签名过程。
最低0.47元/天 解锁文章
8798

被折叠的 条评论
为什么被折叠?



