百趣云 百趣云的博客

🔖加密算法

博主
百趣云
2周前
常量定位法:密码学算法的"指纹鉴定"SO 层逆向最高频的问题是"这段代码用的什么加密算法"。答案几乎总是同一个:搜特征常量。密码学算法的安全性来自密钥,不来自算法结构——所以标准算法内部都嵌着公开的数学常量,这些常量在二进制里就是独一无二的指纹。本文把主流算法的识别常量汇总成一张速查表,配合搜索方法,30 秒识别一个算法。速查表:算法 → 特征常量对称加密:算法特征常量(hex 字节序)AESS盒 63 7C 77 7B F2 6B 6F C5;逆S盒 52 09 6A D5SM4S盒 D6 90 E9 FE CC E1;FK A3B1BAC6TEA 家族delta 0x9E3779B9DES
博主
百趣云
2周前
白盒加密解决什么问题普通 AES 的致命弱点:密钥必须以明文形式出现在内存里(哪怕一瞬间),hook 就能拿走。白盒 AES(White-Box AES)的设计目标是"密钥永不出现"——把密钥和 AES 算法预计算融合成一堆查找表,加密过程就是查表,密钥本身从数学上"溶"进了表里。金融 App、支付 SDK、DRM 系统(如 Widevine)是白盒的主要用户。识别:白盒 AES 长什么样SO 里识别白盒 AES 的特征:没有 AES 特征常量(S 盒搜不到——它被融进自定义表了)大量自定义查找表:数据段里有几 KB 到几百 KB 的神秘表数据加密函数全是查表+异或:没有明显的轮函数结构,就是
博主
百趣云
3周前
自定义加密的本质:混淆而非密码当 App 不用任何标准算法(AES/RSA/TEA 都不是),而是自己撸一套"加密"——通常是异或、加减、位移、置换的组合。从密码学角度它弱不禁风,从逆向角度它的难度在于"没有特征可循":没有常量可搜,只能硬读逻辑。好消息是:这类算法的强度上限很低,掌握方法后还原是时间问题。识别:先确认是自定义算法排除法确认:搜遍密码学常量(AES S 盒、TEA delta、MD5 K 表)无命中加密函数里有大量 eor(ARM 异或指令)、lsl/lsr(位移)、查表操作输入输出长度关系:等长(流式异或)或按块膨胀(分组+填充)还原方法论:四步走第一步:圈定算法边界hook
博主
百趣云
3周前
为什么 CCCrypt 是 iOS 加密的"总开关"iOS App 的对称加密(AES/DES/3DES)绝大多数最终汇聚到系统库 libcommonCrypto 的 CCCrypt 函数——无论上层封装多花哨(自研 SDK、三方库),真正干活的都是它。hook 住这一个函数,密钥、IV、明文、密文全部现形。CCCryptorStatus CCCrypt( CCOperation op, // kCCEncrypt=0 / kCCDecrypt=1 CCAlgorithm alg, // kCCAlgorithmAES=0 / DES=1 / 3DES
博主
百趣云
3周前
为什么会遇到 SM4逆向政务、银行、国企 App 时,加密算法会从 AES 换成 SM4——国家商用密码标准。合规要求(等保、密评)决定了这些领域的 App 必须用国密算法。遇到"结构像 AES 但常量对不上"的分组加密,就要想到 SM4。SM4 与 AES 的结构对比维度SM4AES分组长度128 位128 位密钥长度128 位(唯一)128/192/256轮数32 轮10/12/14 轮结构非平衡 FeistelSPNS 盒1 个 8×8 S 盒1 个 8×8 S 盒(不同的表)识别:SM4 的特征常量S 盒:SM4 的 S 盒开头是:d6 90 e9 fe cc e1 3d b5 16