猿人学 App 逆向闯关系列 · 总目录
本文最后更新于:2026年9月7日 上午
猿人学闯关 App 的离机复现系列总目录,一题一篇,持续更新。
全系列坚持同一约束:不驱动 App、只靠逆向,产物是能独立跑的脚本;每题都走一遍”读请求模型 → 把真实算法读出来 / 跑出来 → 还原”的主线。⚠️ 猿人学闯关 App 是面向逆向练习的 CTF 式靶场;本系列仅用于授权范围内的学习研究,请遵守相关服务条款与法律。
已完成
| 题号 | 标题 | 反爬点 | 逆向手段 | 文章 |
|---|---|---|---|---|
| 第一题 | 题目一 | dex 层 sign | 静态反编译 → 标准 MD4(注意非标准输出字节序) | 阅读 |
| 第二题 | 简单的 so 层加密 | native encrypt(so 不加壳不混淆) | 反汇编读改版 RC4;Frida 主动调用当预言机对拍 | 阅读 |
| 第三题 | 众里寻他千百度【so动态注册】 | native sign + Looper 反模拟 + 时钟强校验 | JNI_OnLoad 揪真身;Unicorn 桩 CallStaticObjectMethodV 绕过 Looper;自校准时钟 | 阅读 |
| 第四题 | 秋水共长天一色【udp 协议】 | native goron 造包 | Unicorn 忠实模拟 echo_cli;响应头即”位置表” |
阅读 |
| 第五题 | 2022 新年快乐 | dex 层变形签名 | ASM 插桩反推变形 MD4 → 纯 Python + JVM 预言机对拍 | 阅读 |
| 第六题 🚧 | session保持检测 | native libcurl+OpenSSL(静态) + goron混淆 + 反调试 + 伪pinning | 空对照定位反root只盯Frida → bind-mount磁盘so patch绕伪pinning → stealth-frida(rusda)复活反检测 → OpenSSL符号全hook逐字段对拍 → Ghidra认出MT19937/AES(data字段自定义cipher未还原,未完待续) | 阅读 |
| 第七题 | 衣带渐宽终不悔【flutter】 | Flutter/Dart AOT 内嵌签名 | Blutter 反编译 Dart AOT → 读出 HMAC-SHA256 双盐 → 纯 Python 自算自发(reFlutter 仅用于定位取样) | 阅读 |
| 第八题 | 寻龙分金看缠山【grpc】 | gRPC(protobuf/HTTP2) | 读 MethodDescriptor+writeTo 拆 schema;手写 protobuf + grpc 通用 stub | 阅读 |
| 第九题 | 借问酒家何处有【双向证书】 | mTLS 客户端证书 | JVM 预言机解混淆字符串定位 clientCA.bks;BKS→PKCS12→PEM;requests 带客户端证书 | 阅读 |
| 第十题 | 题目十【React Native】 | RN bundle 内魔改 MD4 | 读明文 JS bundle 定位 sign_hex;node 直跑拿 ground truth 识破魔改 MD4;逐字转写纯 Python | 阅读 |
| 第十一题 | 学诗谩有惊人句【upx壳】 | UPX 加壳 native | 内存 dump 脱壳 + Frida 取样 → 自定义 Base64 | 阅读 |
| 第十三题 | 东风夜放花千树【封设备】 | native 生成 device_id,按 MAC 封设备 | Unicorn 模拟 getDeviceId → 单变量对照 → 16 项查表纯 Python |
阅读 |
| 第二十题 | 昨夜星辰昨夜风 | 签名在 Lua 脚本(LuaJava) | 抠 code.lua → 认出标准 MD5 + 大端逐字输出 → hashlib 重排 |
阅读 |
| 第二十一题 | 二十四桥明月夜【m3u8】 | 看视频交答案(HLS AES-128) | ffmpeg 解密取流 → 排除画面/音频/元数据 → 答案=首个 ts 的 MD5 | 阅读 |
| 第二十二题 | 书中自有黄金屋【stomp协议】 | STOMP over WebSocket + native 加密 | 反汇编还原魔改 TEA + Frida 对拍;解 WS 掩码补 base64;手写 STOMP 客户端 | 阅读 |
| 第二十三题 | 九重春色醉仙桃【rustndk】 | Rust NDK native 签名 | 读 crate 清单排除标准哈希 → 反汇编认出标准 XTEA → Frida 逐位对拍定位输入(毫秒截 32 位) | 阅读 |
| 第二十七题 | 庭院深深深几许【Weex】 | Weex 远程 bundle + 魔改 SHA1 | curl 远程 index.js → 抠 webpack 模块 17 跑原版 → 逐字节对拍发现只改 h3 → 补 token | 阅读 |
| 第二十八题 | 一池新水碧荷圆【GoNDK】 | Go NDK(gomobile)签名 | panic 路径暴露 tiger.go → 认出 Tiger 哈希 → 从 so 抠 S-box 纯 Python 复现 → 补 token | 阅读 |
方法论速查
| 题目形态 | 该用的手段 |
|---|---|
| dex 层、可反编译 | 反射读 Retrofit 注解拿端点;认标准算法直接还原;魔改就 ASM 插桩取轨迹 + JVM 预言机对拍 |
| native、OLLVM/goron 混淆 | Unicorn 忠实模拟关键函数;ABS64 导入重定位写 stub+addend |
| native、加壳(UPX 等) | 别硬啃离线脱壳,从进程内存 dump 解密后代码;Frida(无 Java 桥时用 JNI 函数表)取样 |
| 协议/响应 | 先看响应结构——很多”随机”包其实是位置表 + 对称解密,取值无需逆请求侧 PRNG |
计划中
其余题目将陆续补齐,按题号顺序更新到本目录。
猿人学 App 逆向闯关系列 · 总目录
https://kingjem.github.io/2026/09/01/猿人学App逆向闯关系列-总目录/