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-dataandroid:name="xposedmodule"android:value="true" /><!--xposed 模块描述--><meta-dataandroid:name="xposeddescription"android:value="这里可以写给用户看的模块描述!" /><!--xposed 支持最小版本--><meta-dataandroid: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 {@Overridepublic 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() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {//Hook函数之前执行的代码}@Overrideprotected 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

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

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

相关文章

两年前的微信聊天记录能恢复吗?正确答案在这里(全)

微信已经成为我们日常沟通中不可或缺的一部分&#xff0c;承载着无数重要的对话和回忆。然而&#xff0c;面对手机更换、系统升级或意外删除等情况&#xff0c;许多人不禁要问&#xff1a;两年前的微信聊天记录能恢复吗&#xff1f;这个问题的答案并不简单&#xff0c;因为能否…

WGCLOUD部署好后,怎么登录WGCLOUD界面

WGCLOUD的server启动完成后&#xff0c;我们在浏览器里输入URL&#xff0c;如下 http://[server主机IP]:9999 注意默认端口就是9999&#xff0c;如果修改过&#xff0c;那么把端口改成自己的实际端口 这样就可以看到登录页面了&#xff0c;默认账号密码是&#xff1a;admin/…

辅助科技照亮道路,携手共促盲文书写技能新飞跃

在这个科技日新月异的时代&#xff0c;创新的力量正以前所未有的方式融入我们的日常生活&#xff0c;特别是对于视觉障碍群体而言&#xff0c;技术的每一次进步都是通往更加独立生活的桥梁。今天&#xff0c;让我们聚焦于一款名为“蝙蝠避障”的辅助软件&#xff0c;它不仅为盲…

Python中日期和时间的互相转换指南

在Python开发中&#xff0c;处理日期和时间是一种非常常见的需求。不论是在数据处理、日志管理、用户行为分析还是其他场景中&#xff0c;我们经常需要在时间戳和日期对象之间相互转换&#xff0c;以及处理相对时间计算。今天&#xff0c;我将通过一个实用的例子向大家展示如何…

探索数字规律与数组操作

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、问题描述与需求概述 二、数字规律的理解 1. 观察数字模式 2. 思考生成方法 三、实现…

C/C++利用 %f 格式化输出整型变量的结果为0.000000

【算法代码】 #include <bits/stdc.h> using namespace std;int main() {int a97;printf("%f\n",a); //0.000000printf("%f\n",(float)a); //97.000000 }/* out: 0.000000 97.000000 */ 【算法分析】 ● 强制类型转换&#xff08;1&#xff09;强制…

Ubuntu24.04安装tabby-terminal-1.0.207并处理依赖

1 下载 tabby-terminal-1.0.207 地址&#xff1a; https://github.com/Eugeny/tabby/releases 点击show all 36 assets 选择 tabby-1.0.207-linux-x64.deb 并下载。 2 依赖下载 gconf2_3.2.6-3ubuntu6_amd64.deb gconf2-common_3.2.6-3ubuntu6_all.deb gconf-service_3.2.6-…

嵌入式开发中做文件同步时的常用工具

在嵌入式开发中&#xff0c;文件同步工具是至关重要的&#xff0c;它们可以帮助开发者在本地计算机和嵌入式设备之间高效地同步文件。根据调研结果&#xff0c;常用嵌入式开发中的文件同步工具有四种&#xff1a; 1.rsync&#xff1a;这是一个非常流行的文件同步工具&#xff…

Vue实现列表的无缝滚动功能

Vue实现列表的无缝滚动功能 直接上代码 codePen地址 <template><div id"app"><div class"list" mouseenter"mouseEnter" mouseleave"mouseLeave"><divclass"list-box"ref"listRef":style&…

怎么挑选骨传导耳机?精选六大选购技巧教你如何挑选

过去的两年里&#xff0c;骨传导耳机逐渐被大众的所熟知。可能毕竟长时间使用音量过大的传统入耳式耳机&#xff0c;多多少少会对我们的听力健康构成威胁。所以很多人就想找一款不伤耳朵的耳机。然后就了解到了骨传导耳机&#xff0c;所以就会延伸出这些问题——骨传导耳机好用…

vue3学习(二)

前言 上一篇分享了vue的基础指令&#xff0c;这篇记录下vue3的核心内容&#xff0c;也是自己的学习笔记&#xff0c;可能有些核心还不全&#xff0c;大佬请略过。 一、核心内容 分享这个之前&#xff0c;先声明下&#xff0c;我这里是用的脚手架的写法&#xff0c;分享的讲解截…

Springboot项目——网页版本五子棋

网页五子棋&#xff1a;本项目简单实现了网页版本的五子棋对战功能&#xff0c;同时会根据用户的天梯分数来匹配&#xff0c;可供多位用户同时提供对战功能。大致可分为三个模块&#xff0c;用户模块&#xff0c;匹配模块&#xff0c;对战模块&#xff0c;下面重点介绍以下三个…

Json读写文件工具类封装

一、概述 在json的读写中主要涉及两种数据类型&#xff0c;字符串和json文件&#xff0c;读取后的数据主要用于传参&#xff0c;由于json文件读取到的数据无法进行直接传参&#xff0c;参数化的数据格式一般为元组格式&#xff0c;所以文件类型的格式读取后还要再做数据类型转…

如何进行数据要素制度建设?

“让数据放心‘供’出来&#xff0c;让更多数据‘活’起来&#xff0c;让数据安全‘动’起来。”11月10日&#xff0c;国家数据局党组书记、局长刘烈宏出席北京数据基础制度先行区启动会议并作重要讲话。 这是刘烈宏履新国家数据局局长以来&#xff0c;首次在公开场合就数据要…

磁力搜索器,磁力链接,磁力狗

磁力链接是一种特殊的下载链接&#xff0c;磁力链接可以理解为一个文件识别码&#xff0c;而并非具体的资源地址&#xff0c;下载软件需要拿着这个识别码去整个互联网(DHT网络)去寻找持有该资源的用户(节点)&#xff0c;如果找到则可以进行传输下载。一般年代越久远的磁力链接下…

腾盾科创无人机亮相第二十四届新疆农机博览会引发观展热潮

5月25日&#xff0c;第二十四届新疆农业机械博览会、2024“一带一路”智慧农业大会&#xff08;以下简称新疆农机博览会&#xff09;在新疆国际会展中心开幕。展会现场多种农牧业的新装备、新技术集中亮相&#xff0c;其中首次在新疆农机博览会上亮相的腾盾科创无人机产品引发观…

C语言——基于stm32G030的温湿度传感器项目实验

一、功能要求&#xff1a; 设备自检功能&#xff1a; 设备上电自检&#xff08;检查传感器采集是否正常&#xff0c; DHT11有存在响应&#xff0c; 可以自检使用&#xff0c; &#xff09;自检通过后&#xff0c;由串口打印设备状态信息。 自动控制功能&#xff1a; 进入自动控…

Clickhouse MergeTree 存储引擎架构总结——Clickhouse 架构篇(二)

文章目录 前言MergeTree存储引擎的三大特点MergeTree 的数据组织MergeTree的文件组织数据文件、元数据文件、索引文件和其他文件分区数据库和表 索引与事务数据库存储引擎的对比存储引擎如何影响查询速度MergeTree存储引擎的工作过程 前言 存储引擎是ClickHouse非常重要的一个…

小易大数据:大数据报告查询领域的黑马,这些优势让你无法忽视!

随着大数据技术被运用到各行各业&#xff0c;风控领域也不例外&#xff0c;形成了基于大数据技术的大数据信用&#xff0c;也就是我们常说的大数据报告或者网贷大数据&#xff0c;在众多的查询平台中&#xff0c;小易大数据平台在市面上是比较受欢迎的&#xff0c;那在小易平台…

windows内存管理

一 windows系统的内存管理涉及哪些 1.1 虚拟内存管理机制 windows操作系统使用虚拟内存技术&#xff0c;将磁盘文件&#xff0c;通过映射对象&#xff08;存储在物理内存&#xff09;关联&#xff0c;映射到虚拟内存作为文件试图。即用户操作"虚拟内存中File View Objec…