百趣云
百趣云的博客
常量定位法:密码学算法的"指纹鉴定"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
滑块验证的两个子问题滑块验证码(极验、顶象、各厂自研)的对抗拆成两个独立子问题:缺口识别(算出滑块要拖多少像素)和轨迹生成(怎么拖得像人)。本文讲第一个。缺口识别的主流方案对比方案准确率成本适用模板匹配85-95%零成本缺口是固定形状贴图边缘检测+轮廓90%+零成本缺口有明显边缘深度学习(YOLO等)98%+要训练干扰多、缺口形态多变打码平台95%+按次付费不想维护任何代码工程上先上模板匹配,准确率不够再升级——大多数滑块的缺口就是一张半透明贴图,模板匹配足够。模板匹配:标准实现滑块验证给两张图:背景图(有缺口)和滑块图(缺口贴图)。核心思路是在背景图上滑动滑块图,找匹配度最高的位置:impo
比 dex 加密更狠的防护普通加固(360/梆梆/乐固)保护的是 dex 文件——运行时解密加载,dump 内存就能拿到明文。但 dex2c 和 VMP 加固玩的是另一个维度:直接把 Java 方法翻译成 native 代码,dex 里只剩一个空壳方法(native 声明或 throw 占位),真实逻辑编译进了 SO。dump 出 dex 也没用——方法体是空的。这就是为什么这类加固被称为"脱壳的终点"。识别:怎么判断中招了jadx 打开脱壳后的 dex,看到这些特征就是 dex2c/VMP:// 特征1:方法体是 native 声明,但 Java 层从没这样写过
public static
先看懂平坦化长什么样正常函数的 CFG(控制流图)是树状的:入口 → 分支 → 汇合 → 返回,层次分明。被 OLLVM 控制流平坦化(Control Flow Flattening)处理过的函数,CFG 变成一个大循环套 switch:入口
↓
state = 初始值
↓
┌─────────────┐
│ while(1) │ ←──┐
│ switch(state) │ │
└─────────────┘ │
↑___________┘所有真实代码块被拍平到同一层级,执行顺序由 state 变量驱动。读这种代码就像看被洗牌的电影——每
App 端登录和 web 端是两个世界前文讲过拼多多 web 端的 anti_content(JS 生成)。App 端的登录态体系完全不同:anti_content 由 native 安全 SDK 生成,登录态和设备深度绑定。本文讲 App 侧的登录态获取与维护。登录方式与协议拼多多 App 的登录方式:手机号+验证码、微信授权、QQ 授权。协议模拟的现实选择是手机号+验证码(微信授权要打通微信的授权链,复杂度翻倍)。登录接口(mtop 风格,以抓包为准):POST https://api.yangkeduo.com/login
Body: mobile=xxx&code=xxx&am