返回列表 发布新帖

[教程] WX读书Sign分析

153 2
发表于 4 天前 | 查看全部 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目标: 图片.webp
定位到:
weread.encrypt.EncryptUtils,nativeGetSignatures方法
写一个HOOK调试一下,
返回64位,猜测可能是经过了sha256的加密。
定位到libencrypt.so
主要函数为 Java_weread_encrypt_EncryptUtils_nativeGetSignatures,其中调用 weread::GenSignature(n) 生成签名。
图片.webp
然后主动调用调试一下,发现我们提交的数组经过sort排序
找到盐:5***1
但是为什么提交的数组,4个参数为什么是5个进行append
发现其使用 weread::RemapString(n) 进行字符串重映射,通过256字节的查找表进行转换

把表抄一下就好了:
  1. def transform_string(input_str):
  2.     byte_Index = [0x34, 0xCA, 0x55, 0x40, 0x1D, 0xB6, 0x93, 0xC6, 0x31,
  3.                  0x30, 0x29, 0x35, 0x32, 0xA7, 0xB8, 0x11, 0xC2, 0xB5,
  4.                  0x16, 0xFA, 0x8B, 0xB1, 0x24, 0xA4, 0x10, 0x90, 4,
  5.                  # ... 完整256字节表
  6.                  0xB7, 0x15]
  7.    
  8.     encoded_bytes = []
  9.     for char in input_str:
  10.         index = ord(char)
  11.         if index < 0 or index >= len(byte_Index):
  12.             raise ValueError(f"字符 '{char}' (ASCII: {index}) 超出查找表范围")
  13.         encoded_byte = byte_Index[index]
  14.         encoded_bytes.append(encoded_byte)
  15.     return ''.join([f"{b:02x}" for b in encoded_bytes])
复制代码
接着看,发现进行两次SHA256哈希计算,每次哈希前都进行自定义重排序:
1.计算校验和:通过异或运算生成一个0-10的校验值
2.数据重排序:根据校验值对输入字节进行循环位移
根据IDA代码翻译即可,不会就问AI

凌霜一剑冷,零雁几声秋

评论2

rgm1988 发表于 4 天前 来自手机 | 查看全部
感谢分享
沙发 4 天前 回复 收起回复
回复

使用道具 举报

唯有一书 发表于 4 天前 来自手机 | 查看全部
感谢分享
板凳 4 天前 回复 收起回复
回复

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

ysqbbs@outlook.com

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 关注公众号
  • 添加QQ群
Copyright © 2001-2025 源社区 版权所有 All Rights Reserved.
关灯 在本版发帖
扫一扫添加QQ群
返回顶部
快速回复 返回顶部 返回列表