hookui xposed插件 支持mcp能力后逆向分析不要太简单

这里是演示hookui 安卓应用 插件 分析另外一个应用首先需要启动这个应用,mcp测试就能调通了完整文档: http://hookui.lozn.top

支持的核心功能总览

管理前端支持功能

  • ✅ 应用Hook状态管理和批量配置
  • ✅ MCP AI功能配置和连接管理
  • ✅ 全局Hook开关和分类配置
  • ✅ 系统状态监控和日志查看
  • ✅ 应用端口分配显示和管理
  • ✅ 白/夜间主题现代化界面

注入后端支持功能

  • ✅ 8大分类Hook功能管理界面
  • ✅ MCP AI助手集成和工具调用
  • ✅ Native内存搜索、读取、写入功能
  • ✅ 字符串Hook和方法追踪
  • ✅ 网络Hook和系统级调试
  • ✅ Activity生命周期管理
  • ✅ JavaScript插件系统
  • ✅ 界面分析和布局调试工具

开发支持功能

  • ✅ 统一UI生成工具链
  • ✅ 双端配置同步机制
  • ✅ 模块化Hook管理系统
  • ✅ 错误隔离和日志系统
  • ✅ 热重载和实时调试
  • ✅ MCP工具扩展框架
  • ✅ 性能监控和优化工具

这里是用的模拟器进行测试 每个应用都能产生一个mcp服务器:端口[图片上传失败...(image-eaca38-1760691311063)]

可以直接局域网打开获取 mcp能力列表[图片上传失败...(image-be5020-1760691311063)]

使用claude目前只支持sse, 应用中显示的是/mcp 应调整为/sse添加命令

claude mcp add --transport sse hookui http://192.168.1.154:8970/sse

用这个命令就可以检查mcp是否正常,应用内同样可以检查

PS D:\dev> claude mcp list

有98个能力

QQ_1760695587927.png
QQ_1760691454907.png

如下图 可以切换多应用分析,这里成功的切换了另外一个应用 能获取到界面是什么组成

QQ_1760691496155.png

也可以获取应用信息来验证这一点,这是另外一个应用的mcp server


QQ_1760691564128.png

切换前台后继续获取


QQ_1760692396030.png

成功提取界面信息


QQ_1760691804424.png

可以看出来分析非常正确,能快速知道当前界面的act还能知道继承哪个类,丝毫不需要用逆向工具解包分析

QQ_1760691884406.png
QQ_1760691973179.png

继续深入他推测出了model

QQ_1760691928106.png
QQ_1760692017811.png

最后直接生成 结构图了


QQ_1760692038178.png
  1️⃣ LoginActivity (View层)

  继承自: BaseActivity

  字段:
  - binding: ActivityLoginBinding - ViewBinding,访问UI控件
  - loginViewModel: LoginViewModel - ViewModel实例
  - _checkUpdateCallPair: PairX - 检查更新回调
  - INTENT_FROM: String - 静态常量

  核心方法:
  - onCreate(Bundle) - 初始化界面
  - submitLogin() - 提交登录
  - callLoginBtn() - 登录按钮逻辑
  - showLoginFailed(String) - 显示登录失败
  - onBackPressed() - 返回键处理
  - toLogin(Context, String) - 静态跳转方法

  ---
  2️⃣ LoginViewModel (ViewModel层)

  继承自: androidx.lifecycle.ViewModel

  字段:
  - loginFormState: MutableLiveData - 表单验证状态
  - loginResult: MutableLiveData - 登录结果
  - compositeDisposable: CompositeDisposable - RxJava订阅管理

  核心方法:

  🔐 登录相关

  // 核心登录方法
  login(boolean rememberMe, String username, String password, String serverUrl)

  // 取消登录
  cancelLogin()

  // 登录成功后生成会话信息
  static SessionInfo doLoginSuccGenereateSessionInfo(
      String username,
      String param2,
      JSONObject serverResponse,
      String token,
      boolean rememberPassword
  )

  ✅ 表单验证

  // 数据变化验证
  loginDataChanged(String username, String password, String field3)

  // 用户名验证
  private boolean isUserNameValid(String username)

  // 密码验证
  private boolean isPasswordValid(String password)

  ⚙️ 配置管理

  // 初始化应用配置
  static void initAppConfig(JSONObject config) throws JSONException

  📡 网络请求

  // 检查登录URL是否失败
  private boolean fetchLoginUrlIsFail(ObservableEmitter emitter, String url)

  📊 LiveData访问

  LiveData getLoginResult()
  LiveData getLoginFormStateLiveData()

  ---
  3️⃣ SessionInfo (Model层)

  用户会话信息模型

  字段(17个):
  // 用户信息
  int userid              // 用户ID
  String name             // 用户名
  String nickname         // 昵称
  String face             // 头像
  String group            // 用户组

  // Token相关
  String token            // 登录Token
  String accessToken      // 访问Token
  long expirationTime     // 过期时间
  long refreshMinute      // 刷新时间

  // 权限相关
  String permissionStr            // 权限字符串
  String permissionDetailJSON     // 权限详情JSON
  int[] modules                   // 模块数组
  ArrayList moduleGroup           // 模块组

  // 其他
  int allow               // 允许标志
  int unreadcount         // 未读消息数
  int supportPrint        // 打印支持
  boolean useWebReport    // 使用Web报表

  核心方法:
  boolean isLogin()              // 是否已登录
  boolean isSupportPrint()       // 是否支持打印
  boolean isUseWebReport()       // 是否使用Web报表

  // 37个getter/setter方法

  ---
  🔄 完整登录流程

  ┌─────────────────────────────────────────────────────┐
  │                    用户界面                          │
  │  ┌───────────────┐  ┌───────────────┐              │
  │  │ 用户名: lozn│  │ 密码: ****   │              │
  │  └───────────────┘  └───────────────┘              │
  │           │                                          │
  │           ↓ 实时验证                                │
  │  loginDataChanged(username, password, ?)            │
  │    ├─ isUserNameValid() ✓                          │
  │    └─ isPasswordValid() ✓                          │
  │           │                                          │
  │           ↓ 点击登录按钮                            │
  │  ┌─────────────────┐                               │
  │  │   [登录]        │                               │
  │  └─────────────────┘                               │
  └───────────┬─────────────────────────────────────────┘
              │
              ↓
  ┌───────────────────────────────────────────────────┐
  │           LoginActivity.callLoginBtn()            │
  │               检查表单是否填写完整                 │
  └───────────┬───────────────────────────────────────┘
              │
              ↓
  ┌───────────────────────────────────────────────────┐
  │         LoginActivity.submitLogin()               │
  │             调用ViewModel执行登录                  │
  └───────────┬───────────────────────────────────────┘
              │
              ↓
  ┌───────────────────────────────────────────────────┐
  │  LoginViewModel.login(rememberMe, username,       │
  │                       password, serverUrl)        │
  │    ├─ fetchLoginUrlIsFail() - 检查URL            │
  │    ├─ RxJava3网络请求                            │
  │    └─ CompositeDisposable管理订阅                │
  └───────────┬───────────────────────────────────────┘
              │
              ↓
        ┌─────────┴─────────┐
        │                   │
     成功 ↓                失败 ↓
  ┌─────────────┐    ┌──────────────────┐
  │ 解析响应数据 │    │ showLoginFailed()│
  │      ↓      │    │   显示错误提示    │
  │ doLoginSucc │    └──────────────────┘
  │ Genereate   │
  │ SessionInfo │
  │      ↓      │
  │ initApp     │
  │ Config()    │
  │      ↓      │
  │ 保存Session │
  │      ↓      │
  │ 跳转主界面  │
  └─────────────┘

  ---


  🔑 关键技术点

  1. MVVM架构 - 清晰的职责分离
  2. ViewBinding - 类型安全的视图访问
  3. LiveData - 响应式数据观察
  4. RxJava3 - 异步网络请求处理
  5. Material Design - 使用Material组件
  6. 会话管理 - SessionInfo存储用户状态
  7. Token认证 - 双Token机制(token + accessToken)
  8. 权限系统 - 基于模块和权限字符串的权限控制

当然还能让它编写脚本 本来是打算让它修改界面的,这个修改界面 目前我还没开发完全 ,但是可以通过ui图标操作修改的


QQ_1760692327774.png

他的思路是js api js api的文档还没告诉他 他写的是有出入的.
但是 他写入的js 在界面上是可以管理编辑的


QQ_1760692453429.png

最后为爱发电,你能发电多少呢?后续有激情的时候更新 支持更多的 mcp能力, 目前演示的mcp 能力有限,其它能力都需要 借助手动 操作ui,然后打开logcat查看日志 进行结合分析, 而后续有激情的话我打算 实现真正的 不需要任何编程,也能让ai 快速分析应用 只需要 手机和对应设备在同一个网 和 对应具备mcp连接的 手机或者pc端应用 就能分析.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容