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

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右键newFolderAssets FolderFinish → 在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;
        }
    }
}

编译但不安装:buildBuild 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL——SELECT相关的题目(力扣难度等级:简单)

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表&#xff08;行转列&#xff09; 1280、学生参加各科测试的次数 1965、丢失信息的雇员 1068、产品销售分…

教你网站如何免费实现https

想要实现https访问最简单有效的的方法就是安装SSL证书。只要证书正常安装上以后&#xff0c;浏览器就不会出现网站不安全提示或者访问被拦截的情况。下面我来教大家怎么去获取免费的SSL证书&#xff0c;又如何安装证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提…

CLI举例:负载分担场景下的源NAT配置(主备设备共用同一个地址池)

CLI举例&#xff1a;负载分担场景下的源NAT配置&#xff08;主备设备共用同一个地址池&#xff09; 组网需求 如图1所示&#xff0c;企业的两台FW的业务接口都工作在三层&#xff0c;上下行分别连接路由器。FW与上下行路由器之间运行OSPF协议。上行接口连接同一个ISP。 现在希…

word-主控文档、文档拆分及标书编写技巧建议

一、主控文档 视图-大纲视图-显示文档-插入子文档 子文档一旦更新&#xff0c;主文档也会更新。更新主文档&#xff0c;子文档也会更新 需要注意&#xff0c;不可修改子文档名字 二、上交文件 显示文档-折叠子文档-只显示一级-取消链接-关闭大纲视图-保存 三、文档拆分 根…

数据结构算法题day03

数据结构算法题day03 题目 题目 2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)算法思想&#xff1a; 1、常规的解法&#xff1a; Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…

Thinkphp5响应式进销存仓库管理系统

随着企业规模的不断扩大和市场竞争的日益激烈&#xff0c;进销存管理在企业的运营中扮演着越来越重要的角色。为了提高企业的运营效率&#xff0c;降低库存成本&#xff0c;提升客户满意度&#xff0c;越来越多的企业开始引入进销存仓库管理系统。 进销存仓库管理系统是一种集…

【机器学习】深入探索机器学习:线性回归算法的原理与应用

❀线性回归算法 &#x1f4d2;1. 引言&#x1f4d2;2. 线性回归的基本原理&#x1f389;回归方程&#x1f389;最小化误差&#x1f389;线性回归的假设条件 &#x1f4d2;3. 线性回归算法的实现&#x1f4d2;4. 线性回归算法的特征工程&#x1f4d2;5. 线性回归模型评估与优化&…

蓝桥杯练习系统(算法训练)ALGO-932 低阶行列式计算

资源限制 内存限制&#xff1a;64.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给出一个n阶行列式(1<n<9)&#xff0c;求出它的值。 输入格式 第一行给出两个正整数n,p&#xff1b;   接下来n行&…

oracle准确记录数据提交时间

注意&#xff1a;mysql中的默认值同样记录的是dml操作发出时的时间&#xff0c;并且没有找到mysql中准确记录commit时间的方法。 oracle中数据发生变动时&#xff0c;如何准确记录发生变动时的时间。一般会使用ts字段&#xff0c;该字段使用默认值&#xff0c;default to_char…

JeeSite 4.x and 5.x快速开发平台前端技术探索与实践

一、引言 随着企业信息化建设的不断推进&#xff0c;对于快速、高效、安全的企业级应用需求日益增长。JeeSite作为一款企业级快速开发平台&#xff0c;以其强大的后端功能和灵活的前端架构&#xff0c;为开发者提供了强大的支持。本文旨在探讨JeeSite快速开发平台在前端技术方…

c++——模板初始识

1.函数模板 我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同&#xff0c;我们就需要写不同参数类型的同名函数&#xff0c;也就是函数重载&#xff1a; 然而这三个函数的逻辑是一样的&#xff0c;写这么多有些多此一举&#xff0c;通过函数模版可以写一个通用…

摸鱼大数据——Hive表操作——文件数据的导入和导出

数据导入和导出 1、文件数据导入 1.1 直接上传文件 window页面上传 需求: 已知emp1.txt文件在windows/mac系统,要求使用hdfs保存此文件 并且使用hivesql建表关联数据 use day06; ​ -- 1- 创建Hive表 create table emp1 (id int,name string,salary int,dept string )row for…

CUDA_VISIBLE_DEVICES‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

问题&#xff1a; 命令行出现CUDA_VISIBLE_DEVICES0 python trainer.py这种命令 这是Linux可以的&#xff0c;但是Windows不行。 解决方案&#xff1a; 这条命令的含义是指定某个GPU来运行程序&#xff0c;我们可以在程序开头添加指定GPU的代码&#xff0c;效果是一样的&…

xLSTM——解析扩展长短期记忆的网络算法与应用

1.概述 二十多年来&#xff0c; 塞普霍赫赖特 创举 长短期记忆 (LSTM) 架构在许多深度学习突破和实际应用中发挥了重要作用。从生成自然语言到为语音识别系统提供动力&#xff0c;LSTM 一直是人工智能革命背后的驱动力。 然而&#xff0c;即使是 LSTM 的创建者也认识到它们固…

【Sql Server】随机查询一条表记录,并重重温回顾下存储过程的封装和使用

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言随机查询语…

Visual Studio +Resharp,让你在C#编程界一骑绝尘!【文末送2024C#入门到精通教程视频+源码C#.NET全栈开发高级VIP班[完结】

目录 前言 一、Visual Studio&#xff1a;C#开发的强大后盾 二、ReSharper&#xff1a;智能代码编辑器的典范 三、Visual Studio ReSharper&#xff1a;一骑绝尘的编程组合 四、如何发挥最大效能 五、结论 文末福利&#xff1a; 文末有福利 前言 在C#编程领域&#x…

情感分析及数据集代码解析

15.1. 情感分析及数据集 — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import os import torch from torch import nn from d2l import torch as d2l#save d2l.DATA_HUB[aclImdb] (http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz,01ada507287d828…

【Altium Designer】安装教程

一、软件下载 二、软件安装 三、授权文件激活 一、软件下载 Altium Designer官网下载 二、软件安装 1.解压完下载好的软件&#xff0c;鼠标右击【OfflineSetup_Altium_Designer_Public_24_5_1】安装程序&#xff0c;选择【以管理员身份运行】。 2.语言选择【Chinese】&#…

如何向《大众日报》理论稿投稿?

《大众日报》是山东省委机关报&#xff0c;其理论版是该报的重要版面之一&#xff0c;主要刊登关于政治、经济、文化、社会等方面的理论文章和研究成果。 - 投稿方式&#xff1a;通常可以通过电子邮件或在线投稿系统向《大众日报》理论版投稿。 - 选题范围&#xff1a;理论版…

回收站删掉的照片还能找回来吗?掌握这5个方法,很简单!

“我一不小心在回收站中误删了一些照片&#xff0c;这些照片对我来说是比较重要的&#xff0c;不知道这些还有机会将它们找回来吗&#xff1f;” 当我们不小心将珍贵的照片从计算机的回收站中误删时&#xff0c;那种瞬间的心痛和焦虑难以言表。这些照片可能记录了我们生活中的重…