发布于: 2024-11-14最后更新: 2025-2-12字数 2481阅读时长 7 分钟

目标是修改编译lsposed, 实现默认hook所有app, 并且自动hook 新安装的app, 无须勾选模块作用域立即生效

下载LSPosed_mod源码

 

jdk版本

jdk 21

查看workflows

并没有太大的价值, 因为最新的action他也编译不过…
 

拉取子模块

拉取libxposed

编译失败

notion image
因为最新版本的libxposed已经删除注解
notion image
这也是github上actions编译Lsposed失败的问题

三种方式修复

  • checkout libxposed删除annotations包之前的版本
  • 复制libxposed-compat中的annotations 包到libxposed/api中, 重新编译发布到本地maven仓库
 
notion image
我这边选择第三种最简单
 

附上第二种方法侵入式最小

修改settings.gradle.kts
修改core/build.gradle.kts
修改magisk-loader/build.gradle.kts

Yarn报错

 
加入—stacktrace 获取更详细的编译日志
原因: A problem occurred starting process 'command 'yarn''
因为是在window下, 调整命令, 修复yarn找不到

编译

./gradlew zipAll 或者 gradlew zipAll

查看magisk-loader\release

notion image
 
重启后查看Lsposed logcat
解决
 

修改模块作用域

目的是无需勾选应用或游戏, 相当于是默认hook所有游戏, 包括新安装的游戏, 自动生效

lspxpose启动流程

调用链

 

结构

 
org.lsposed.lspd.service.ConfigManager
LSPosed的核心功能都在daemon进程中实现,这是框架的主要服务进程
  • 在daemon中,ConfigManager是负责管理模块配置、作用域和hook规则的核心类
  • shouldSkipProcess - 决定是否要hook某个进程
  • getModulesForProcess - 获取进程需要加载的模块
  • cacheScopes - 缓存模块作用域配置
  • 这些方法都集中在 daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java 中
 
 

修改作用域缓存configManger.java

cacheScopes

修改LSPosedService.dispatchPackageChanged

修改PakcageService

 

Loading...
公告
 
花有重开日, 人无再少年~