百趣云
百趣云的博客
🔖安卓逆向
JSBridge 是混合开发 App 的"海关"混合开发 App(原生壳 + H5 核心页面)里,所有 native 能力和 H5 逻辑的交互都走 JSBridge:H5 调 native 算签名、native 给 H5 推登录态、H5 调 native 起支付……把 JSBridge 看光,混合 App 就没有秘密。JSBridge 有两种主流实现,分析前先分清对手用哪种。实现一:addJavascriptInterface(直接调用型)native 把 Java 对象暴露给 JS:webView.addJavascriptInterface(new BridgeObject(), &quo
为什么第一个 hook 点永远是 Application.onCreate写 Xposed 模块逆向 App,90% 的功能需要 Context(拿包管理器、访问 SharedPreferences、弹 Toast 调试)。而模块加载时(handleLoadPackage)是没有 Context 的——进程刚启动,Application 都还没创建。所以所有 Xposed 模块的第一个标准动作:hook Application.onCreate,在回调里拿 Context,再干正事。模块骨架public class MainHook implements IXposedHookLoadPack
为什么要监控 WebView混合开发 App 的核心逻辑经常不在 Java 层而在 H5 里:登录态的传递、支付回调、加密参数的生成,都通过 WebView 的 JSBridge 在 native 和 H5 之间穿梭。只 hook Java 层会漏掉一半的信息流。监控 WebView 要抓三个点:loadUrl(加载了什么页面)、JSBridge(双向通信内容)、evaluateJavascript(执行了什么 JS)。监控 loadUrl 与页面加载Java.perform(function() {
var WebView = Java.use('android.webkit.Web
objection 是什么:Frida 的"免编程外壳"objection 把 Frida 最常用的逆向能力封装成交互式命令:内存搜类、hook 方法、dump 内存、绕过 root 检测——全部一行命令搞定,不用写 JavaScript。它不是替代 Frida 脚本,而是侦察阶段的效率工具:先用 objection 快速摸清 App 结构,确定关键类和方法,再写精准的 Frida 脚本。pip install objection
objection -g com.target.app explore # attach 已运行的 App
objection -g com.targ
为什么静态符号找不到 native 方法分析 SO 时经常遇到:Java 层声明了 public static native String getSign(...),但 IDA 的导出表里找不到 Java_com_xxx_getSign。原因是 JNI 动态注册——SO 在 JNI_OnLoad 里调用 RegisterNatives,把 Java 方法名和 native 函数地址运行时绑定,符号表里完全没有痕迹。这是商业 App 的标配做法,目的就是增加静态分析难度。但绑定动作本身必须调用系统 API,这就是突破口。RegisterNatives 的数据结构动态注册的核心是一个 JNINat