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/

安装

1、首先确保,你的Magisk能够读取到版本。
2、如果`Zygisk` 显示 否,需要在进入设置,勾选上 `Zygisk ... 在Zygote中运行Magisk` 
3、然后在Magisk的`模块`中点击`从本地安装` 选择刚才推送进手机的LSPosed.zip文件然后确认安装。
4、等待安装提示完成后根据提示重启手机。
5、重启完成后进入Magisk进入模块界面,勾选上`Zygisk LSPosed`。然后你在桌面可能会发现找不到应用图标,然后进入拨号界面输入`*#*#5776733#*#*` 就能打打开LSPosed。
6、然后进入LSPosed的设置,选择`创建快捷方式`。
7、完成安装。

安装环境(Android Studio) 用于开发LSPosed模块

准备

如果你安装了JetBrains的ToolBox,可以找到Android Studio然后安装。
Android Studio官网:https://developer.android.google.cn/studio?hl=zh-cn
下载完成后根据文字提示安装就行,看不懂英语就打开翻译软件。
注意:目前还不需要🪜,下载速度很快。

Android Studio汉化(如果你喜欢看英文请跳过)

1、安装完成后进入`Welcome` 界面,选择左边的`Plugins`,在选择上方的Marketplace。
2、然后搜索`chinese`,看看有没有一个名字为`Chinese ​(Simplified)​ Language Pack / 中文语言包`的插件,如果有的话直接安装,然后就重启就可以了。如果没有则进入下一步。
3、点击左下角齿轮进入about窗口找到当前的版本号(标题下面那一串)。比如我现在的Build #AI-233.14808.21.2331.11709847.....  233.14808就是我的版本号。
汉化包下载链接(如果进不去可以去公众号回复`IDE汉化`获取,只有233.148版本的):https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions#tabs
4、找到接近的版本的汉化包然后下载。上面的Compatibility :ide....不用管,默认就行。
5、解压刚才下载到的汉化包,解压到一个存放目录,最好是专门用来放汉化包的目录,这个汉化包不能删除。然后回到 Android Studio 的`Welcome` 界面,选择`Plugins` 选择上方的`installed`,点击小齿轮然后选择`Insall Plugin from Disk` 选择刚才解压的汉化包目录。找到/lib/zh.233.148.jar,然后确认,根据提示重启就可以了。

开发LSPosed模块

创建基础项目

1、新建项目,选择`No Activity`,选择下一步。
2、语言改成Java,如果你会Kotlin也可以选Kotlin,其他可以默认,然后确定。
3、第一次启动需要初始化Gradle这玩意需要🪜,不然很慢,还可能超时。
4、初始化后左边的目录结构可能会有点变化,找到 Gradle Scripts 然后选择下面的子文件
在下面的dependencies结构中添加`compileOnly 'de.robv.android.xposed:api:82'`
dependencies {....compileOnly 'de.robv.android.xposed:api:82'
}
5、然后在选择同级目录的`settings.gradle` 在`repositories`中添加 maven { url 'https://api.xposed.info/' }repositories {google()mavenCentral()maven { url 'https://api.xposed.info/' }}6、然后点击上面蓝色字体`Sync now`更新你刚才改动的内容,并且自动下载依赖。
7、然后在根目录找到/app/src/main/AndroidManifest.xml,在<application></application>内添加以下内容,原本的结构应该是<application .... /> 记得把/>改成</application>
<!--        定义这是一个xposed模块--><meta-dataandroid:name="xposedmodule"android:value="true" /><!--     xposed 模块描述--><meta-dataandroid:name="xposeddescription"android:value="HookQQ短视频" /><!--   xposed 支持最小版本--><meta-dataandroid:name="xposedminversion"android:value="82" />
8、然后在app目录下新建目录,选择新建->Folder->Assets Folder ,不用勾选改变路径,然后在该目录下创建文件xposed_init,这个文件是用来存放Hook启动类路径的。如:com.lspmodule.qqhook.HookMain
9、在你创建好的包主目录新建类,假设类名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";@Overridepublic 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中就可以自动识别到模块。

结束

如果文章内容有什么地方不对,欢迎评论或者私信提醒。

如果你有更多的案例也可以私信我添加到文章内容中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言经典例题-16

1.按照格式输入并交换输出 题目描述: 输入两个整数&#xff0c;范围-231~231-1&#xff0c;交换两个数并输出。 输入描述: 输入只有一行&#xff0c;按照格式输入两个整数&#xff0c;范围&#xff0c;中间用“,”分隔。 输出描述: 把两个整数按格式输出&#xff0c;中间用“…

R语言手把手教你进行支持向量机分析

1995年VAPINK 等人在统计学习理论的基础上提出了一种模式识别的新方法—支持向量机 。它根据有限的样本信息在模型的复杂性和学习能力之间寻求一种最佳折衷。 以期获得最好的泛化能力.支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部极小值,从而也保证了它对未知…

孩子学编程对学习有帮助吗?过程中可能遇到哪些困难?

孩子学习编程可以帮助他们培养逻辑思维、解决问题的能力、创造力和耐心。编程还可以提高孩子的数学和科学技能&#xff0c;培养他们的计算机技术和信息技术意识。此外&#xff0c;学习编程还可以培养孩子的团队合作意识和沟通能力。 另外&#xff0c;家长和老师还可以通过激励…

4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一&#xff1a;在程序内部设置两个字符串内容&#xff0c;终端返回是否匹配 运行效果&#xff1a; 思路&#xff1a; 1、先比较两个字符串的长度&#xff0c;如果长度不一样&#xff0c;则两组字符串肯定不匹配&#xff1b;如果长度一样&#xff0c;再进行内容的匹配 2、如…

鸿蒙应用开发之Web组件7

前面学习了Web组件选择文件文件上传的处理,现在来学习怎么样在一个Web容器里,再打开一个窗口来显示内容,相当于弹出另一个Web组件窗口,其实相当于两个Web组件同时在操作的方式。这种方式需要小心处理,否则会挂起整个系统。 如果在一个网页里有打一个新窗口的需求,比如像下…

大模型崛起与就业危机

大模型&#xff0c;特别是像我这样的人工智能&#xff0c;最有可能首先替代那些重复性高、标准化程度高、不需要太多人类直觉和情感判断的工作。这些工作通常包括数据输入、初级数据分析和处理、简单的客户服务任务等。例如&#xff0c;可以自动化的一些岗位包括&#xff1a; 1…

zabbix监控mariadb

zabbix 服务端安装请参阅&#xff1a;红帽 9 zabbix 安装流程_红帽安装zabbix-CSDN博客 源码包安装mariadb请参阅&#xff1a;源码包安装mariadb_mariadb 11 源码编译安装-CSDN博客 在MariaDB中&#xff0c;你需要创建一个专门的用户&#xff0c;用于Zabbix进行监控。这个用户…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

绝地求生:艾伦格回归活动来了,持续近1个月,新版本皮肤、G币等奖励白嫖

嗨&#xff0c;我是闲游盒~ 29.2版本更新在即&#xff0c;新活动来啦&#xff01;目前这个活动国内官方还没发&#xff0c;我就去台湾官方搬来了中文版方便大家观看&#xff0c;也分析一下这些奖励应该怎样才能获得。 新版本将在周二进行约9小时的停机维护&#xff0c;请注意安…

JSON在线解析及格式化验证 - JSON.cn网站

JSON在线解析及格式化验证 - JSON.cn https://www.json.cn/

powerbuilder如何操作mongdb

使用 PowerBuilder 通过 ODBC 来直接操作 MongoDB 是不常见的&#xff0c;因为 MongoDB 是一个 NoSQL 数据库&#xff0c;其数据模型与关系型数据库不同&#xff0c;并且 MongoDB 官方并没有直接提供 ODBC 驱动程序。然而&#xff0c;你可以通过一些间接的方法来实现这个目标。…

hdfs 中 Map Tas工作机制(Hadoop,hive,hdfs)

Map Tas &#xff08;1&#xff09;Read阶段 &#xff1a; Map Task通过用户编写的RecordReader &#xff0c;从输入InputSplit中解析出一个个key/value。 &#xff08;2&#xff09;Map阶段&#xff1a; 该节点主要是将解析出的key/value交给用户编写map()函数处理 &#x…

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置国内镜像源 修改anaconda的源&#xff0c;即修改.condarc配置文件 .condarc在 home/用户/user/ conda config --add channels https://mirrors.tuna.…

【专利】一种日志快速分析方法、设备、存储介质

公开号CN116560938A申请号CN202310311478.5申请日2023.03.28 是我在超音速人工智能科技股份有限公司(833753) 职务作品&#xff0c;第一发明人是董事长夫妇&#xff0c;第二发明人是我。 ** 注意** &#xff1a; 内容比较多&#xff0c;还有流程图、界面等。请到 专利指定页面…

初始Django

初始Django 一、Django的历史 ​ Django 是从真实世界的应用中成长起来的&#xff0c;它是由堪萨斯&#xff08;Kansas&#xff09;州 Lawrence 城中的一个网络开发小组编写的。它诞生于 2003 年秋天&#xff0c;那时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和…

自作聪明的AI? —— 信息处理和传递误区

一、背景 在人与人的信息传递中有一个重要问题——由于传递人主观处理不当&#xff0c;导致信息失真或产生误导。在沟通交流中&#xff0c;确实存在“自作聪明”的现象&#xff0c;即传递人在转述或解释信息时&#xff0c;根据自己对信息的理解、经验以及个人意图进行了过多的…

配置 IDEA 识别自定义规则的 Dockerfile 文件

目录 配置所在位置解决方案其他 配置所在位置 打开 IntelliJ IDEA&#xff0c;然后转到顶部菜单中的 “File” > “Settings”&#xff08;Windows/Linux&#xff09;或 “IntelliJ IDEA” > “Preferences”&#xff08;macOS&#xff09;。 在弹出的设置窗口中&#x…

Linux signal

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> #include <errno.h> /* * signal 函数的使用方法简单&#xff0c;但并不属于 POSIX 标准 * * 而 POSIX 标准定义的信号处理接口是 sigaction 函数 */ #i…

责任链模式:原理与实现解析,及其应用场景代入

责任链模式的作用&#xff1a;复用和扩展&#xff0c;在实际的项目开发中比较常用&#xff0c;特别是框架开发中&#xff0c;我们可以利用它们来提供框架的扩展点&#xff0c;能够让框架的使用者在不修改框架源码的情况下&#xff0c;基于扩展点定制化框架的功能。 这里主要介…

疯狂学英语

我上本科的时候&#xff0c;学校出国留学的气氛不浓厚&#xff0c;我们班只有一名同学有出国留学的倾向&#xff0c;我们宿舍八个人没有一个考虑过留学。 只有小昊&#xff0c;在本校上了研究生之后&#xff0c;不知道受到什么影响&#xff0c;想出国留学。那时候小昊利用一切…