百趣云
百趣云的博客
🔖加密算法
TEA 家族为什么在这些领域流行TEA(Tiny Encryption Algorithm)的设计目标是"用最少的代码实现分组加密"——核心加密循环不到 20 行 C 代码。这使它成为手游协议、IoT 固件、嵌入式设备的标配加密:代码量小、速度快、资源占用低。逆向这些领域时,TEA/XXTEA 的识别率是 AES 之外最高的。识别:黄金分割常量是路标TEA 的灵魂常量是 0x9E3779B9(2^32/φ,黄金分割比的无理数近似):void tea_encrypt(uint32_t* v, uint32_t* k) {
uint32_t v0 = v[0], v1 = v[1], su
Base64 魔改为什么流行Base64 本身不是加密(公开编码),但换表 Base64 是最便宜的"伪加密":把标准索引表打乱,解码结果立刻变成乱码。成本一行代码,效果是没见过的人对着乱码发呆半天。逆向遇到"看着像 base64 但解不开"的数据,九成是换表。识别:三个特征字符集是 base64 风格(64 个字符 + 可能的填充符 =),但标准解码出乱码长度符合 base64 规律(4 的倍数)统计特征:字符分布接近均匀(base64 的典型分布)import base64
data = "k3j4h5..." # 待识别数据
try:
decoded = b
HMAC 的结构决定了密钥是唯一的秘密HMAC-SHA256 是 App 接口签名的主流方案。它的结构:HMAC(key, msg) = SHA256( (key ⊕ opad) || SHA256((key ⊕ ipad) || msg) )算法完全公开,唯一的秘密是 key。逆向 HMAC 的本质就是一场"找 key"的游戏——key 藏在哪,决定了你的工作量和路径。key 的五种藏身之处(按常见度排序)1. Java 层硬编码字符串String KEY = "a8f5c3d2e1..."; // 最直接,jadx 全文搜得到搜索技巧:搜 HmacSHA256(Mac
为什么厂商爱魔改 MD5MD5 是 App 签名最常用的摘要算法,但标准 MD5 人人会算,防护约等于零。于是厂商流行"魔改 MD5"——改动算法内部的常量或轮函数,让标准实现算出的结果对不上。逆向的核心技能就是识别魔改点。标准 MD5 的三个可改点1. 初始向量(IV)标准 MD5 的四个初始寄存器:A = 0x67452301
B = 0xEFCDAB89
C = 0x98BADCFE
D = 0x10325476魔改手法:改这四个值(+1、异或、换成别的常量)。识别方法:IDA 里搜 0x67452301(十进制 1732584193),搜不到但附近有相似常量 = IV 被改。2. K
RSA 在 App 里的典型角色App 里 RSA 几乎不做主加密(太慢),而是两个固定角色:密钥交换:AES 密钥用 RSA 加密传输(网易云 weapi 就是这套)签名:登录凭证、支付参数的防篡改签名(私钥签、公钥验)逆向时遇到 RSA,先判断它是哪种角色——密钥交换要拿"公钥+加密逻辑",签名场景要拿"私钥"(基本拿不到,只能换思路)。公钥的定位方法Java 层:搜特征字符串:"RSA/ECB/PKCS1Padding" ← Cipher 初始化
"-----BEGIN PUBLIC KEY-----" ← PEM 格式公钥
"