Xposed插件编写
所需要环境 :
jdk sdk xposed激活安装
xposed激活安装 :https://blog.csdn.net/weixin_38927522/article/details/119832717
1.Android Studio 项目AndroidManifest.xml添加xml标识:
<!-- 添加标识 --><meta-dataandroid:name="xposedmodule"android:value="true"/><!-- 载入Hook模块之后显示的信息 value可修改--><meta-dataandroid:name="xposeddescription"android:value="Xposed Proxy For HOOK"/><!-- 规定jar包的版本信息 --><meta-dataandroid:name="xposedminversion"android:value="54"/>
2. 引入jar包并添加依赖:
两个jar包,Bridge是实现,api-82是调用,调用无法查看源代码实现逻辑,故而会小一些,这两个用哪个都可以。
build.gradle下dependencies中引入:
compileOnly files('lib/api-82.jar')
全build.gradle文件如下:
apply plugin: 'com.android.application'android {compileSdkVersion 29defaultConfig {applicationId "com.sun.xposed"minSdkVersion 19targetSdkVersion 29versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {compileOnly files('lib/api-82.jar')implementation fileTree(dir: "libs", include: ["*.jar"])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'}
3.创建hook类:
package com.sun.xposed;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class XposedHook implements IXposedHookLoadPackage{@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {// 判断当前启动的目标程序是否是要hook的应用程序if(loadPackageParam.packageName.equals("cn.com.cvsource")){XposedBridge.log("编写Xposed插件模板,开启HOOK之路!");XposedHelpers.findAndHookMethod("cn.com.cvsource.utils.EncryptUtils", // 包名+类名loadPackageParam.classLoader,
// "encrypt", // 要hook的方法名称"getApiSalt", // 要hook的方法名称
// String.class, String.class,String.class, // 参数列表new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);// 打印参数信息// 获取第一个参数
// XposedBridge.log("String1:"+param.args[0]);
// // 获取第二个参数
// XposedBridge.log("String2:"+param.args[1]);
// XposedBridge.log("String3:"+param.args[2]);}// hook之后 可以打印返回值信息 修改返回值@Overrideprotected void afterHookedMethod(MethodHookParam param)throws Throwable {super.afterHookedMethod(param);// 打印方法返回值信息XposedBridge.log("result:"+param.getResult());// 修改方法返回值param.setResult(true);}});}}
}
4.在main下创建xposed入口:
创建assets文件夹 并创建 xposed_init,写清入口类:com.sun.xposed.XposedHook。
5.运行及打包:
可通过build编译成apk,提供其他人使用。
指定目录下创建秘钥,并选择release完成编译。
6.总体结构
Xposed插件编写相关推荐
- 【Android视频号③ Xposed插件编写】
这节 就是将frida代码翻译为Xposed 然后利用Sekiro服务进行接口调用 Xposed环境 我的测试环境是 LSPosed 它是完全兼容XP模块的 (免重启调试起来方便一点)下载后用Magi ...
- cocos2d编写android插件,[分享]Xposed插件dump Cocos2d-x应用的lua脚本
入门示例,大佬轻拍. 没有找到预览,请忍受排版. 很多安卓游戏.应用使用Cocos2d-x和lua开发,并且lua脚本都是加密保存的,根本无法直接阅读. 今天我们基于Xposed开发一个插件,来dum ...
- xposed模块编写教程_最新的Xposed模块编写教程
前言:最近看了很多的Xposed的入门教程,根据的我的实践,写此教程,希望对新手有所帮助. 1.编写一个被Hook的App.代码 1 packagecom.example.hookdemo;2 3 i ...
- 安卓逆向——AS开发Xposed插件demo案例
AS开发Xposed插件demo案例 环境和工具 : 模拟器:雷电 4.0.43版本 安卓版本:7.1.2 x86 Xposed :xposed-installer-3-1-5 安装好 androi ...
- Xpatch:免Root实现App加载Xposed插件的一种方法
Xpatch概述 Xpatch用来重新签名打包Apk文件,使重打包后的Apk能加载安装在系统里的任意Xposed插件,从而实现免Root Hook任意App. 源码 github.com/WindyS ...
- 逆向android-让你也能开发微信的xposed插件-手机root(一)
逆向android-让你也能开发微信的xposed插件 手机root 手机安装Magisk 开启root手机debugable功能,对所有应用进行断点调试 学习smail语言基本语法 通过断点调试,查 ...
- Gulp:插件编写入门
之前挖了个坑,准备写篇gulp插件编写入门的科普文,之后迟迟没有动笔,因为不知道该肿么讲清楚Stream这货,毕竟,gulp插件的实现不像grunt插件的实现那么直观. 好吧,于是决定单刀直入了.文中 ...
- VS2010插件编写学习总结
VS2010 Addins 外接程序(插件)开发 http://www.cnblogs.com/Leo_wl/archive/2013/03/21/2973886.html 简单做了一个添加文件头注视 ...
- [Linux实用工具]munin-node插件配置和插件编写
前面介绍了2篇munin使用的相关文章: [Linux实用工具]Linux监控工具munin的安装和配置 [Linux实用工具]Linux监控工具munin的展示(Nginx) 这次介绍一下munin ...
最新文章
- Android Studio(IDEA)太占系统盘?帮你移动下
- C# 8.0 抢先看-- Async Stream
- vs2012中VC连接mysql
- mysql 查询分析器中使用if_查询分析器中开发代码测试检查_MySQL
- 学校老师绝对不会教的方法,让你的孩子拥有一个开挂般的人生!
- JQuery-Dialog(弹出窗口,遮蔽窗口)
- Exynos4412 Uboot 移植(五)—— Uboot 移植过程
- LeetCode450题—— 删除二叉搜索树中的节点
- 【leetcode困难】968. 监控二叉树
- 32位dll转64位工具_如何在64位系统中运行32位或16位程序
- 笔记︱利用python + flask制作一个简易本地restful API
- 8.84 亿什么概念?
- Could not read JSON: Cannot construct instance of `java.util.ArrayList$SubList`Redis反序列化异常
- Socket通讯之UDP
- c#连续打印问题,即进销存销售单打印问题完美解决
- Java实习日记(4)
- python实现12306车票查询
- 谭浩强版c语言笔记(1)
- mysql benchmark 测试工具_mysql benchmark基准测试
- 智慧发电厂+智能发电厂web端平台管理系统+Axure高保真智慧电厂系统+能耗管理+告警管理+生产监控+安防设备管理+运维设备管理+监控面板+系统管理+智慧电厂+电厂系统+智慧电厂管理平台+rp原型