编写第一个LSPosed模块

0. 前言


这个需求是要求持续监听土豆app的群聊消息。

开始的话已经有frida的相关python脚本了,可以hook到消息和一些数据,但是不全,需要再连接到土豆app自己的sqlite3数据库去获取跟id对应的用户名和群组名。

做完后发现稳定性实在是堪忧,adb链接很容易就断开了,而且还要配台电脑在旁边跑,很麻烦。于是聪明的我想到了能不能用lsposed模块来完成这个任务。

(当然,frida我也没摸过多少次,稳定性这方面雀食不太懂)

1. Android Studio


既然是要编写一个APK,当然是要用对应的编辑器,这里用的是Android Studio,下载完就感觉像回到家了一样,还得是JetBrain的编辑器对味。

🦑是第一次写apk,啥也不会,网上看了一下教程,新建了一个 Empty Activity ,给了一个项目名potatohook,Minimum SDK选择了我的手机的google版本邻近的API29(我的手机是安卓10,为了支持安卓版本更低的机型也可以开到API27),Build configuration language选择Kotlin后,来到 `app/java/com.example.potatohook` 目录下创建了一个MainHook.java 文件,在这里编写lsposed的核心代码。

2. Kotlin


当然,作为第一次写的我,完全不知道这些长得奇奇怪怪的文件是什么玩意。他有就算了,还有两个!名字还一样!这谁搞得清啊。

百度一下,再gpt一下,可得:

app/build.gradle.kts

Gradle 构建系统的配置文件,用于定义项目的依赖、任务和插件等。

settings.gradle.kts

配置构建仓库,依赖管理,项目结构定义

比较重要的就这两个配置文件

3. 主要代码


最主要的当然就是我们hook的代码了,我们先重新看一下当前的目标和问题:

  • 目标:
    1. 监听群组消息
    2. 数据要有作者id和名称,群组id和名称
    3. 上传到数据库
  • 问题:
    1. 只有frida的hook脚本,要根据frida脚本编写xposed hook脚本
    2. hook到的数据只有id,没有名称,名称要到数据库自己搜
  • 注:部分源码及核心功能已删改,如有需要可自行编写

app\src\main\java\com\example\potatohook\MainHook.java

assets/xposed_init

xposed的入口,告诉xposed该运行哪个文件

4. 同步和编译


本来在修改配置的时候就应该进行同步,不过还是放在一起说了

同步(Sync Project with Gradle Files):为项目下载依赖(相当于python里面的pip?)但是这个还是比较容易报错的,大部分应该是版本问题,可以问一下gpt如何解决

编译(Make Project):构建整个项目,并且新版本会顺带编译一个app-debug.apk

在完成修改后,需要同步并编译得到新的apk,该apk的路径是 \PotatoLSP\app\build\outputs\apk\debug\app-debug.apk

5. 安装并启用LSPosed


打开cmd或者直接用Android Studio的终端,利用adb直接安装apk

打开lsposed,模块里面已经可以看到我们编写的插件了,启用模块,勾选土豆app,再打开土豆app即可

肥肠成功!


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注