问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

XPosed项目的接入、模版制作、改名全过程

创作时间:
作者:
@小白创作中心

XPosed项目的接入、模版制作、改名全过程

引用
CSDN
1.
https://blog.csdn.net/yi_rui_jie/article/details/139260853

本文详细介绍了XPosed项目的接入、模版制作和改名全过程。内容包括创建XPosed项目、配置AndroidManifest.xml、引入Xposed相关依赖、编写Hook代码、创建模版项目以及项目改名等步骤。文章结构清晰,内容详实,适合有一定Android开发基础的读者学习XPosed模块开发。但是需要注意的是,文章中的Android Studio版本(2023.3.1 Patch 1)可能已经过时,实际操作时可能会遇到一些差异。

XPosed项目的接入、模版制作、改名全过程

写在前面

之前写过一篇关于Xposed Hook 过登录密码验证配置开发Xposed项目的文章,这次的接入使用的是当前最新版

Android Studio

,接入稍微有些差别,也记录下。

本篇文章主要是写关于

XP项目接入

制作XP模版项目

XP模版项目改名

,制作干净的模版项目,后续再开发项目时可重复利用,省事又省力!

Android Studio版本:Android Studio Jellyfish | 2023.3.1 Patch 1

Build #AI-233.14808.21.2331.11842104, built on May 15, 2024

XP项目接入

创建界面

创建

No Activety

Android 项目,

Minimum SDK

选择

API 24:Android 7.0

这代表支持最小支持7.0版本,可以根据自己需要调整,并在

AndroidManifest.xml

中添加以下相关配置,如下图所示:


<application  

        。。。。。  

        <!--识别是否是Xposed模块-->  

        <meta-data  

            android:name="xposedmodule"  

            android:value="true" />  

        <!--xposed 模块描述-->  

        <meta-data  

            android:name="xposeddescription"  

            android:value="这里可以写给用户看的模块描述!" />  

        <!--xposed 支持最小版本-->  

        <meta-data  

            android:name="xposedminversion"  

            android:value="24" />  

    </application>  

引入配置

app/build.gradle

中添加

xposed包

,若不想让其报黄可按下图所示点击,将其加入到

gradle/libs.versions.toml

中即可!

compileOnly ‘de.robv.android.xposed:api:82’ // compileOnly 表示编译时不一起编译进apk

切换为

项目

然后在

main

下创建

assets

目录,并设置为

资源文件夹

,再创建

xposed_init

文件(文件类型为txt)

流程:

main

右键new

Folder

Assets Folder

Finish

→ 在

xposed_init

文件中添加

入口函数类


// 包名.类名  

com.yrj.dy.Hook  // 可以有多个,以换行符为分割,这里Hook为入口函数类。  

settings.gradle

中添加

maven { url 'https://api.xposed.info/' }

代码编译

java

目录的包名下创建

Hook

类, 其中定义


package com.yrj.dy;  

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;  

import de.robv.android.xposed.IXposedHookLoadPackage;  

import de.robv.android.xposed.XC_MethodHook;  

import de.robv.android.xposed.XposedBridge;  

import de.robv.android.xposed.callbacks.XC_LoadPackage;  

public class Hook implements IXposedHookLoadPackage {  

    @Override  

    public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {  

        String PN = lpparam.packageName;//获取被Hook的软件包名  

        switch (PN) {  

            //软件名称  

            case "软件包名":  

                XposedBridge.log("软件的包名是: " + PN); //打印软件的包名  

                findAndHookMethod("要Hook的包名+类名",//  

                        lpparam.classLoader,  

                        "要Hook的方法名",  

                        String.class,//要Hook的方法参数类型  

                        new XC_MethodHook() {  

                            @Override  

                            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {  

                                //Hook函数之前执行的代码  

                                  

                            }  

                            @Override  

                            protected void afterHookedMethod(MethodHookParam param) throws Throwable {  

                                super.afterHookedMethod(param);  

                                //Hook函数之后执行的代码  

                                  

                                XposedBridge.log(PN + ":已Hook");  

                            }  

                        }  

                );  

                break;  

            //软件名称  

            case "软件包名1":  

                XposedBridge.log("软件的包名是: " + PN);  

                break;  

            //软件名称  

            case "软件包名2":  

                XposedBridge.log("软件的包名是: " + PN);  

                break;  

            default:  

                XposedBridge.log("当不存在时默认: " + "未Hook");  

                break;  

        }  

    }  

}  

编译但不安装:

build

Build App Bundle(s) / APK(s)

Build APK(s)

,也可运行Dubug模式让其安装到手机上,并激活模块试用即可!

XP模版项目

删除多余内容

在上方

XP项目接入

的基础上,删除一些项目中多余的无用的引入、资源,添加一些资源优化、安全相关配置等等,可在后续打包时减少软件包大小以及提高软件包的安全性等!

删除测试相关引入:

删除图标相关资源:

配置混淆优化

配置签名验证

这里我就不详细写了,直接查下自己软件签名的SHA-1值搞个Hash,在Oncreate下搞几行代码获取软件的签名Hash与其对比,相等的话就正常进入软件,否则就直接杀死软件退出即可!可简单防止别人对其软件进行反编译后再回编译签名的操作。

XP项目改名

经过上方

XP项目接入

XP模版项目

创建好的模版项目后,这时就需要修改模版项目名称,修改前记得备份一份模版项目文件,后续可再重复利用!

本文方法仅适用于Android Studio 4.0及以上的版本;若Android Studio版本小于4.0,通过以下修改后,需要另外修改项目中的~/.idea/modules.xml文件、AndroidManifest.xml这些文件才行。

Android Studio版本:Android Studio Jellyfish | 2023.3.1 Patch 1

Build #AI-233.14808.21.2331.11842104, built on May 15, 2024

文件夹改名

找到项目存放的位置,我的项目路径是在

D:\softProject\AndroidStudioProject\

目录下,将项目名称修改成新的项目名。

例如:将XP模版项目

XPModel

改为

dy

,然后打开

Android Studio

,打开修改名称之后的

dy

项目即可!

修改项目名

打开项目根目录下的

settings.gradle

文件,修改文件中的

rootProject.name="新项目名"

,改为

dy

,如下图所示:

修改包名

默认情况下,包名在

AndroidStudio

中显示是合在一起的,这时只能修改包名的最后一个部分,不能全部修改,不然可能会出现小问题。

需要去取消

Compact Middle Packages(压缩空的中间软件包)

打勾,然后单独选择需要修改的包名,对其

重构

重命名

即可!如下图所示:

点击

Refactor(重构)

重命名

后,填入

dy

并勾选两个选项后点击预览,

AndroidStudio

会在

左下角

显示会改变的所有项,预览后点击

Do Refactor(重构)

即可!如下图所示:

修正错误的修改:找到Hook类然后

右键

复制路径/引用

复制引用

,然后替换

xposed_init

文件中的内容即可!如下图所示:

修改文件名

然后检查并修改

AndroidManifest.xml

文件中的

android:label

标签的

应用名

android:theme

标签中的

主题名

,将其

XPModel

全修改为

dy

即可!如下图所示:

点击

文件

Syn Project with Gradle Files

,同步完成后点击

Close Project(关闭项目)

,然后 再重新打开一次项目即可去写Hook代码!

正常创建的Android项目(非Xposed项目),使用这种方式来对项目改名更加的方便,大家也可以依葫芦画瓢改即可!

写在后面

为何要这样创建一个模版项目再去更改项目的名字?而不是再去新建一个项目?新建一个项目岂不是更加的简单直接吗?

如上所示,Xposed项目开发前需要引用些配置,不熟悉的人每次创建和引用配置都要花费一些时间。新建项目里也有很多无用的测试引用包、资源等,这样的项目,当软件成品打包后也会变得稍大(也可先配置好资源优化、混淆字典、签名验证等),所以可先将一些麻烦的、重复的搞成一个通用模版再改名即可!

参考链接:

Xposed 模块开发 – 基础:https://blog.csdn.net/weixin_44791631/article/details/131586387

Android Studio修改项目名称和包名的步骤:https://blog.csdn.net/qq_34205684/article/details/114401402

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号