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

news2024/10/4 17:14:58

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

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

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

相关文章

Oracle中rman的增量备份使用分享

继上次使用RMAN的全量备份和异机还原以后&#xff0c;开始研究一下增量备份和还原的方法。相比于全量RMAN的备份还原&#xff0c;增量的备份还原就相对简单。本实践教程直接上操作&#xff0c;还是回归到一个问题&#xff0c;就是关于两个数据库创建时候&#xff0c;必须保持or…

如何应对触摸一体机触摸屏失灵问题?怎么校准?

触摸一体机是一种功能强大的设备&#xff0c;集成了电脑、电视和触摸屏等多种功能。其中&#xff0c;触摸屏是其重要组成部分之一。然而&#xff0c;当触摸屏突然失灵时&#xff0c;我们该如何应对呢&#xff1f;以下是一些建议&#xff0c;以帮助您排除问题并重新获得正常触摸…

汇凯金业:如何识别黄金价格图表中的关键支撑和阻力位

识别黄金价格图表中的关键支撑和阻力位是黄金交易的一个基本而关键的技能。以下是一些方法来帮助投资者发现这些重要的价格水平&#xff1a; 1. 历史价格水平 观察图表&#xff0c;找出黄金价格在过去曾多次反弹或回落的价格点。这些水平在未来的交易中可能再次成为关键的支撑…

记一次 .NET某工控WPF程序被人恶搞的 卡死分析

一&#xff1a;背景 1. 讲故事 这一期程序故障除了做原理分析&#xff0c;还顺带吐槽一下&#xff0c;熟悉我的朋友都知道我分析dump是免费的&#xff0c;但免费不代表可以滥用我的宝贵时间&#xff0c;我不知道有些人故意恶搞卡死是想干嘛&#xff0c;不得而知&#xff0c;希…

【链表】Leetcode 61. 旋转链表【中等】

旋转链表 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3] 解题思路 要将链表每个节点向右移动 k 个位置&#xff1a; 计算链表…

抖店类目错放怎么办?怎么改类目?快速解决抖店类目错放问题

大家好&#xff0c;我是电商花花。 我们运营抖音小店的时候&#xff0c;都知道不要放错类目&#xff0c;也知道放错类目的后果&#xff0c;类目错放可能导致商品无法在正确的类目中展示&#xff0c;从而影响到商品的一个曝光率。 严重的话还被平台扣分&#xff0c;扣保证金&a…

【大学物理】期末复习笔记总结

1-6章&#xff08;第2版&#xff09;以下是鄙人期末复习时总结的笔记&#xff0c;希望可以帮到大家 第一章&#xff1a; 第二章&#xff1a; 第三章&#xff1a; 第四章&#xff1a; 第五章&#xff1a; 第六章&#xff1a;

安泰电子:高压功率放大器应用场合介绍

高压功率放大器是一种电子设备&#xff0c;用于将低电压信号放大到较高电压水平&#xff0c;以满足各种应用需求。它在多个领域中具有广泛的应用&#xff0c;包括科学研究、工业生产、通信技术以及医疗设备。下面安泰电子将介绍高压功率放大器的应用场合。 科学研究 高压功率放…

SpringBoot自动装配源码

自动装配&#xff1a; 实际上就是如何将Bean自动化装载到IOC容器中管理&#xff0c;Springboot 的自动装配时通过SPI 的方式来实现的 SPI&#xff1a;SpringBoot 定义的一套接口规范&#xff0c;这套规范规定&#xff1a;Springboot 在启动时会扫描外部引用 jar 包中的META-IN…

有一个3x4的矩阵,求矩阵中所有元素中的最大值。要求用函数处理

解此题的算法已在之前的文章中介绍&#xff0c;详见&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/139181787 编写程序&#xff1a; 运行结果&#xff1a;

基于微信小程序+ JAVA后端实现的【医院挂号预约系统】 设计与实现 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 《基于微信小程序的医院挂号预约系统设计与实现》 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java, SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信小程序, uni-app 项目展示 全文概括 本…

一文解析恢复删除的文件:分享10个电脑数据恢复软件

电脑文件误删除&#xff0c;不仅让我们感到焦虑&#xff0c;还可能丢失重要的数据。只要使用正确的数据恢复软件&#xff0c;有可能成功恢复被删除的文件。本文将分享10个电脑数据恢复软件。 1、嗨格式数据恢复大师 一款免费预览的数据恢复软件&#xff0c;可以帮助你恢复从硬…

Apifox 更新|编排模式、Markdown 编辑器升级、自动申请 SSL 证书、用户反馈问题优化

Apifox 新版本上线啦&#xff01; 看看本次版本更新主要涵盖的重点内容&#xff0c;有没有你所关注的功能特性&#xff1a; 自动化测试新增「编排模式」Markdown 编辑器全新升级返回响应直接预览 PDF 及视频自动申请 SSL 证书支持配置自定义域名的子目录流式接口支持筛选和清…

RocketMQ 主从复制原理深度解析

提到主从复制&#xff0c;我们可能立马会联想到 MySQL 的主从复制。 MySQL 主从复制是 MySQL 高可用机制之一&#xff0c;数据可以从数据库服务器主节点复制到一个或多个从节点。 这篇文章&#xff0c;我们聊聊 RocketMQ 的主从复制&#xff0c;希望你读完之后&#xff0c;能…

与苹果力杠?微软AI PC全面升级

KlipC报道&#xff1a;5月21日&#xff0c;在召开的Build开发者前瞻活动中&#xff0c;微软CEO称全面升级AI PC&#xff0c;将Copilot融入Windows 11系统&#xff0c;GPT-4o 模型加持。 微软称即将发布全新款Surface电脑&#xff0c;将采用其Copilot标准&#xff0c;以支持人工…

IND-ID-CPA 和 IND-ANON-ID-CPA Game

Src: https://eprint.iacr.org/2017/967.pdf

【web网页官网】原创200套html+css网页制作尽在IT黄大大官网(持续更新中)

200套HTMLCSS网页制作开发 &#x1f354;涉及知识&#x1f964;写在前面&#x1f308; 网站效果 (持续更新...)&#x1f367; 一、涉及主题&#x1f333;二、具体访问方式访问入口1&#xff1a;威信公众号【IT黄大大】访问入口2、访问网址访问入口3、直接点击下面链接访问入口4…

操作教程|通过DataEase开源BI工具对接金山多维表格

前言 金山多维表格是企业数据处理分析经常会用到的一款数据表格工具&#xff0c;它能够将企业数据以统一的列格式整齐地汇总至其中。DataEase开源数据可视化分析工具可以与金山多维表格对接&#xff0c;方便企业更加快捷地以金山多维表格为数据源&#xff0c;制作出可以实时更…

交流负载箱:电力系统的稳定利器

交流负载箱是电力系统中的一种重要设备&#xff0c;主要用于模拟电网中的负载情况&#xff0c;以便对电力系统进行各种性能测试和分析。它是电力系统的稳定利器&#xff0c;对于保障电力系统的稳定运行起着至关重要的作用。 交流负载箱可以模拟电网中的负载情况&#xff0c;为电…

灵狐剪辑软件,视频AI剪辑+去水印裁剪+视频 分割+批量合成+智能混剪(教程+软件)

1.介绍&#xff1a; 【灵狐剪辑】是一款视频编辑工具&#xff0c;能够帮助用户轻松地制作出专业级别的视频作品。这款软件拥有丰富的视频编辑功能&#xff0c;包括剪辑、合并、添加特效、调整音频等&#xff0c;让用户能够充分发挥创意&#xff0c;打造出独具特色的视频内容。…