Xposed插件开发
Xposed插件开发(一)简单demo
xposed下载地址:http://repo.xposed.info/module/de.robv.android.xposed.installer
xposed开发包源码:https://github.com/rovo89/XposedBridge.git
xposed简易demo:https://github.com/rovo89/XposedExamples.git
准备阶段
新建android工程,只需要修改三个地方,就可以开发xposed插件了:
导入XposedBridgeApi.jar
我这边图省事直接将demo中lib文件拷贝到当前工程中了
Androidmanifest.xml 没有activity也不要紧。
<application
android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><!-- 增加三个meata-data --><meta-data
android:name="xposedmodule"android:value="true" /><meta-data
android:name="xposeddescription"android:value="make a Simcard id" /><meta-data
android:name="xposedminversion"android:value="30" /></application>
在assets中添加xposed_init文件
xposed_init文件记录xposed插件处理类,文件写入格式为:包名+类名
简单demo
由于某app需要获取sim卡才能运行,这边准备利用xposed伪造一份simcard id绕过去。
代码放在gihub:https://github.com/saidyou/com.saidyou.xposed.simcard.git
package com.saiyou.xposed.simcard;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import android.telephony.TelephonyManager;
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.LoadPackageParam;
public class Simcard implements IXposedHookLoadPackage {public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {// TODO Auto-generated method stubXposedBridge.log(lpparam.packageName + " [Simcard]"); // sim is usefully findAndHookMethod(TelephonyManager.class.getName(),lpparam.classLoader,"getSimState",new XC_MethodHook(){protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {// TODO Auto-generated method stubsuper.beforeHookedMethod(param);}protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {// TODO Auto-generated method stubsuper.afterHookedMethod(param);//TelephonyManager.SIM_STATE_READY 5param.setResult(TelephonyManager.SIM_STATE_READY);} }); // get sim id findAndHookMethod("android.telephony.TelephonyManager",lpparam.classLoader,"getSubscriberId",new XC_MethodHook(){}
}
问题
xposed没有运行
问题描述: 在android studio下编译,会将XposedBridgeApi.jar编译到dex中,然后xposed框架在运行时不是调用系统中的xposed接口,而是自身的jar包
解决方法: 所以删掉不必要的代码,xposed的才能正常运行,我这边写脚本处理,可以借鉴
import sys
import os
import shutilpwd = sys.path[0]
temp_path = pwd+'\\temp'
if os.path.exists(temp_path):shutil.rmtree(temp_path)cmd = "apktool d -r %s\\app-release.apk -o %s"%(pwd,temp_path)print cmd
os.system(cmd)shutil.rmtree('%s\\smali\\de'%temp_path)
shutil.rmtree('%s\\smali\\androidx'%temp_path)
shutil.rmtree('%s\\smali\\android'%temp_path)
shutil.rmtree('%s\\unknown'%temp_path)text = ''
is_unknown = False
for line in open('%s\\apktool.yml'%temp_path):if is_unknown == False and line.find('unknownFiles:')+1:is_unknown = Trueelif is_unknown and line.startswith(' ') == False:is_unknown = Falseelif is_unknown == False:text += lineopen('%s\\apktool.yml'%temp_path, 'w+').write(text)
os.system("apktool b -r %s -o %s\\new.apk"%(temp_path,pwd))
os.system("apksign %s\\new.apk"%pwd)
os.system('adb install -r %s\\new_signed.apk'%pwd)
加载so
问题描述: xposed的模块,在高版本下,例如android7.1上无法加载自己的so
1、存在路径限制,只能加载/system/lib和/vertor/lib下的so
2、域空间名限制
Xposed插件开发相关推荐
- [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...
- Xposed 插件开发之二: Xposed的一些知识
上一篇<Xposed 插件开发之一: Xposed入门> 一. Api说明 IXposedHookLoadPackage 加载回调接口,在xposed入口类继承,实现handleLoadP ...
- Xposed Xposed插件开发
Xposed插件开发 简单介绍 Xposed,大名鼎鼎得Xposed,是Android平台上最负盛名的一个框架.在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接操纵系统层面的东西 ...
- [Android开发] Xposed 插件开发之三: 编写广告去除插件
上一篇<Xposed 插件开发之二: Xposed的一些知识> 一. 准备 要去广告的app: 追杀神器3.75 反编译工具: AndroidKiller1.3.1 查看布局工具: UIA ...
- Xposed插件开发手册(1): Xposed框架的安装
前言 之前我写了一篇文章<定制ROM采坑之路(2):魔趣OS刷入小米5A手机过程详解>,在进行成功刷机后,我尝试将Xposed框架安装到我新刷的系统中了.因为我这里的操作是基于魔趣OS的, ...
- Xposed插件开发手册(2):Xposed插件开发入门
前言 在上一篇文章<Xposed插件开发手册(1): Xposed框架的安装>,我们学习到了Xposed的安装,这篇文章我们就来做一个简单的Xposed模块,劫持我们写的App,整篇文章我 ...
- android+xposed插件,初探Xposed 插件开发
1.之前手机上要是想要使用Xposed 功能必须root,然后我们并不想root,或者麻烦,偶尔看到了下面的APP,毫不犹豫用上了xpost 2.详细使用指南看官网把,简单就是单独开了个沙盒,不需要在 ...
- android hook 程序,Android hook框架之Xposed插件开发
上一篇讲了Android hook框架Cydia,这一篇是Android hook的另一个框架Xposed,Xposed是一款广泛应用于安卓领域的开源框架. 其原理是Xposed框架主要通过替换/sy ...
- Xposed插件开发环境配置
准备 已获得root权限的手机 Xposed Installer 安装运行环境 手机上安装Xposed Installer后打开,框架->安装/更新->重启 配置开发环境 android ...
最新文章
- 理解oracle中连接和会话
- ArcGIS中加载模块时dojo/domReady!和dojo/ready的区别
- System verilog随机系统函数$urandom使用方法
- 零基础学python图文版-如何快速创建投票页面 | 腾讯问卷怎么用_什么值得买
- 推荐几个清华和交大学霸公众号,值得学习
- 基于python+boostrap的学校图书馆管理系统
- 开发团队人员配备与角色分配
- Python0基础(中)——期末不挂科
- 10分钟学会发送邮件到指定邮箱
- 【微服务】Nacos注册中心
- Android程序水印效果
- java实现爬虫,爬取网易歌单信息
- 昨夜星辰昨夜风,只因见您在梦中
- SAP基底数据仓库实战项目(序章)
- 全差分运算放大器浅析
- 此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情
- 数据库原理-几种数据模型
- 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常
- C# 调用微软自带SpeechSDK 实现文字转语音
- 一些程序设计模式的整理