百趣云
百趣云的博客
🔖逆向
混淆后的代码为什么难读ProGuard/R8 混淆后,类名方法名全变成 a.b.c、a.a.a——不同类同名、同类不同方法同名,全局搜索基本报废。但混淆只改名字,改不了结构:字符串常量、API 调用关系、继承体系都还在。反混淆的核心思路就是用结构特征替代名字特征。技巧一:字符串是永不混淆的路标无论怎么混淆,字符串常量必须保留(运行时要真用)。逆向第一步永远是搜字符串:# 在 jadx 里全局搜(Text search)
"sign" → 找签名相关
"token" → 找鉴权相关
"AES/CBC/PKCS
逆向能力的全景图逆向工程不是单一技能,是一个技术栈的组合。按依赖关系分四层:基础层(1-2 个月):Python 熟练(协议模拟的主力语言)HTTP 协议细节(header、cookie、TLS 的概念级理解)JavaScript 能读能改(web 逆向的前提)Java 基础(Android 逆向的前提)工具层(1-2 个月):抓包:Charles/mitmproxy 熟练,tcpdump+Wireshark 会用静态:jadx(Android)、IDA/Hopper(SO/iOS)动态:Frida(核心武器,投入产出比最高)浏览器:DevTools 的断点、hook、调用栈分析对抗层(2-4
WebGL 指纹的两类信息WebGL 给网页暴露了 GPU 的访问能力,风控从两个层面收集指纹:第一类:参数信息(静态指纹)var canvas = document.createElement('canvas');
var gl = canvas.getContext('webgl');
// 基础参数
gl.getParameter(gl.VENDOR); // "WebKit"
gl.getParameter(gl.RENDERER); // "WebKit WebGL"
gl.getParameter(gl.VERSION);
Cycript 是什么:OC 的交互式 REPLCycript 是一个能 attach 到 iOS 进程的交互式解释器,语法是 JavaScript 和 Objective-C 的混合体。attach 之后,整个 App 的运行时对象图都是你的 Console——枚举对象、调方法、改属性、甚至现场创建新对象,全部即时生效。# 越狱设备上
cycript -p TargetApp # attach 到进程
cycript -p 1234 # 或按 PID进入 REPL 后的第一感受:cy# UIApp.keyWindow.rootViewController
为什么要知道 App 接了哪家风控逆向一个 App 的协议,第一步不是找签名算法,而是确认它接了哪家风控 SDK——不同厂商的采集策略、检测点、对抗难度差异巨大,打法完全不同。识别方法很简单,jadx 搜包名:数美:com.ishumei / smid 参数顶象:com.dingxiang / dx 前缀 / constId 参数同盾:cn.tongdun / blackbox 参数三家对比数美(Shumei)核心产物:smid(设备 ID),接口里常见 smid、smDeviceId 参数采集特点:设备硬件信息全,传感器、电池等行为字段多检测强度:模拟器/root 检测中等,Frida 检测