LSPosed 安装、模块开发笔记
LSPosed 安装、模块开发笔记
LSPosed是一个强大的Android系统修改框架,它允许用户在不修改应用程序的情况下Hook应用程序。本文将详细介绍LSPosed的安装步骤、环境配置以及模块开发的具体流程。
前言
最近几天从零接触LSPosed(xposed),需要自己开发模块进行使用,做一下学习笔记。
本篇内容在已经root并且成功刷入了Magisk的基础上进行。
注意:LSPosed只支持安卓版本8.x+的设备。如果在8.0以下需要使用xposed。他们的模块开发接口也是一样的。
什么是Magisk
我理解它是需要root权限的工具类软件的载体,通过它来获取root权限(现在的安卓手机都不能直接获取root权限),同时也起到一种“隐身”的作用,防止被应用程序知道被有root权限的工具操作了。(有用过手游外挂或者gg修改器的人应该懂什么意思🤪)
引用AI的回答:
Magisk是一个非常流行的Android系统修改工具,由XDA开发者开发。它的核心功能是提供一个系统级的界面,允许用户在不改变系统分区的情况下,以模块化的方式对Android系统进行修改和定制。Magisk的主要特点和作用包括:
- 系统分区保护:Magisk通过在系统启动过程中注入代码,实现了对系统分区的无损修改。这意味着用户可以在享受定制化功能的同时,保持系统的纯净状态,便于官方系统更新。
- Root权限管理:Magisk提供了一个灵活的SU(SuperUser)管理机制,允许用户控制哪些应用程序可以获得root权限,提高了安全性。
- 模块支持:Magisk的一个关键特性是支持各种模块,这些模块可以是功能增强、界面美化、系统优化等。用户可以根据需求安装不同的Magisk模块来扩展或修改系统功能,LSPosed就是其中之一。
- 隐藏特性:Magisk还具有“隐身”功能,能够隐藏系统被修改的事实,这对于某些需要安全验证的应用(如银行应用)特别有用。
至于为什么LSPosed需要使用Magisk,这是因为:
- 安全性和便利性:Magisk为LSPosed这样的系统级修改框架提供了一个安全可靠的安装环境。通过Magisk管理器,用户可以轻松安装、更新或卸载LSPosed,而不会影响到系统的完整性。
- 权限管理:LSPosed需要root权限来执行其核心的Hook功能,Magisk提供的SU管理机制正好满足了这一需求,同时允许用户精细控制权限分配,确保安全。
- 模块化集成:作为Magisk的一个模块,LSPosed可以无缝集成到Magisk生态系统中,与其他模块共存,共同为用户提供一个高度可定制的Android体验。
什么是LSPosed(xposed)
简单说就是可以在不修改应用程序的情况下Hook应用程序。类似于使用frida进行hook app。LSPosed的作用就是你可以自己开发一个安卓Hook应用,然后使用LSPosed加载它,并且指定对某个app进行hook。
引用AI回答:
LSPosed是一种针对Android系统的高级定制和修改框架,它是Edxposed的一个分支项目。LSPosed的设计目标是在不修改任何应用和系统组件的情况下,通过hook技术实现在运行时修改应用程序行为的能力,类似于知名的Xposed框架。这一框架为Android用户和开发者提供了强大的功能,允许他们定制系统和应用程序,比如修改系统设置、视觉效果、或者增强应用功能等,而无需触及原始的应用程序代码或重新编译系统。
LSPosed的关键特性包括:
- 基于Riru的ART Hook框架:LSPosed建立在Riru的基础上,Riru是一个低层次的Hook框架,能够在Android系统的ART(Android Runtime)层面上工作,支持从Android 8.0到11的版本。
- 与Xposed兼容的API:它提供了与原版Xposed相同的API,这意味着许多为Xposed开发的模块可以直接在LSPosed上运行,降低了迁移成本。
- 更高的效率和稳定性:相比其前身Edxposed,LSPosed被设计得更加简洁、高效且稳定,减少了潜在的崩溃和性能问题。
- 长期更新和支持:由于Edxposed面临着停更的风险和稳定性问题,LSPosed作为一个活跃维护的项目,承诺提供长期的更新支持,不断集成新功能并保持与最新Android版本的兼容性。
- 使用YAHFA或SandHook进行Hook:这两种技术帮助LSPosed在应用启动时动态插入代码,实现无痕且高效的Hook操作,无需重启手机即可使Hook模块生效。
对于希望深度定制自己Android设备体验的高级用户和开发者而言,LSPosed是一个强大且灵活的工具。不过,使用此类框架通常需要root权限,并且涉及系统级别的修改,因此也伴随着一定的风险和挑战。
准备
官方仓库:(如果没有🪜下载太慢可以关注公众号(IT绿色恐龙)回复LSPosed
获取网盘链接)
LSPosed:https://github.com/LSPosed/LSPosed/releases
安装LSPosed
推送文件到手机
# 连接了多台设备,指定一台进行push,如果你只用usb或者使用了tcpip连接了一台设备可以直接adb push
adb -s 1f79e024 push ~/Downloads/LSPosed-v1.9.2-7024-zygisk-release.zip /sdcard/
安装
- 首先确保,你的Magisk能够读取到版本。
- 如果
Zygisk
显示 否,需要在进入设置,勾选上Zygisk ... 在Zygote中运行Magisk
- 然后在Magisk的
模块
中点击从本地安装
选择刚才推送进手机的LSPosed.zip文件然后确认安装。 - 等待安装提示完成后根据提示重启手机。
- 重启完成后进入Magisk进入模块界面,勾选上
Zygisk LSPosed
。然后你在桌面可能会发现找不到应用图标,然后进入拨号界面输入*#*#5776733#*#*
就能打打开LSPosed。 - 然后进入LSPosed的设置,选择
创建快捷方式
。 - 完成安装。
安装环境(Android Studio) 用于开发LSPosed模块
准备
如果你安装了JetBrains的ToolBox,可以找到Android Studio然后安装。
Android Studio官网:https://developer.android.google.cn/studio?hl=zh-cn
下载完成后根据文字提示安装就行,看不懂英语就打开翻译软件。
注意:目前还不需要🪜,下载速度很快。
Android Studio汉化(如果你喜欢看英文请跳过)
- 安装完成后进入
Welcome
界面,选择左边的Plugins
,在选择上方的Marketplace。 - 然后搜索
chinese
,看看有没有一个名字为Chinese (Simplified) Language Pack / 中文语言包
的插件,如果有的话直接安装,然后就重启就可以了。如果没有则进入下一步。 - 点击左下角齿轮进入about窗口找到当前的版本号(标题下面那一串)。比如我现在的Build #AI-233.14808.21.2331.11709847..... 233.148就是我的版本号。
汉化包下载链接(如果进不去可以去公众号回复IDE汉化
获取,只有233.148版本的):https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions#tabs - 找到接近的版本的汉化包然后下载。上面的Compatibility :ide....不用管,默认就行。
- 解压刚才下载到的汉化包,解压到一个存放目录,最好是专门用来放汉化包的目录,这个汉化包不能删除。然后回到 Android Studio 的
Welcome
界面,选择Plugins
选择上方的installed
,点击小齿轮然后选择Insall Plugin from Disk
选择刚才解压的汉化包目录。找到/lib/zh.233.148.jar,然后确认,根据提示重启就可以了。
开发LSPosed模块
创建基础项目
- 新建项目,选择
No Activity
,选择下一步。 - 语言改成Java,如果你会Kotlin也可以选Kotlin,其他可以默认,然后确定。
- 第一次启动需要初始化Gradle这玩意需要🪜,不然很慢,还可能超时。
- 初始化后左边的目录结构可能会有点变化,找到 Gradle Scripts 然后选择下面的子文件
在下面的dependencies结构中添加compileOnly 'de.robv.android.xposed:api:82'
dependencies {
....
compileOnly 'de.robv.android.xposed:api:82'
} - 然后在选择同级目录的
settings.gradle
在repositories
中添加 maven { url 'https://api.xposed.info/' }
repositories {
google()
mavenCentral()
maven { url 'https://api.xposed.info/' }
}
- 然后点击上面蓝色字体
Sync now
更新你刚才改动的内容,并且自动下载依赖。 - 然后在根目录找到/app/src/main/AndroidManifest.xml,在
内添加以下内容,原本的结构应该是<application .... /> 记得把/>改成 <meta-data android:name="xposedmodule" android:value="true" /> <!-- xposed 模块描述--> <meta-data android:name="xposeddescription" android:value="HookQQ短视频" /> <!-- xposed 支持最小版本--> <meta-data android:name="xposedminversion" android:value="82" />
- 然后在app目录下新建目录,选择新建->Folder->Assets Folder ,不用勾选改变路径,然后在该目录下创建文件xposed_init,这个文件是用来存放Hook启动类路径的。如:com.lspmodule.qqhook.HookMain
- 在你创建好的包主目录新建类,假设类名HookMain。
则把package com.lspmodule.qqhook;
下面的代码改成以下内容:
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class HookMain implements IXposedHookLoadPackage {
private static final String TAG = "HookQQ";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
Log.i(TAG, "Hook Start....");
Log.i(TAG, "packageName:" + lpparam.packageName);
}
}
10. 然后右键这个类文件,然后选择复制路径/引用->复制引用
然后粘贴到刚才创建好的xposed_init目录。
11. 结束,LSPosed模块的基本结构就是这样,然后就可以构建成APK,然后推送到手机上安装,安装好后在LSPosed中就可以自动识别到模块。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
结束
如果文章内容有什么地方不对,欢迎评论或者私信提醒。
如果你有更多的案例也可以私信我添加到文章内容中。
本文原文来自CSDN,作者:IT绿色恐龙