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插件开发相关推荐

  1. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  2. Xposed 插件开发之二: Xposed的一些知识

    上一篇<Xposed 插件开发之一: Xposed入门> 一. Api说明 IXposedHookLoadPackage 加载回调接口,在xposed入口类继承,实现handleLoadP ...

  3. Xposed Xposed插件开发

    Xposed插件开发 简单介绍 Xposed,大名鼎鼎得Xposed,是Android平台上最负盛名的一个框架.在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接操纵系统层面的东西 ...

  4. [Android开发] Xposed 插件开发之三: 编写广告去除插件

    上一篇<Xposed 插件开发之二: Xposed的一些知识> 一. 准备 要去广告的app: 追杀神器3.75 反编译工具: AndroidKiller1.3.1 查看布局工具: UIA ...

  5. Xposed插件开发手册(1): Xposed框架的安装

    前言 之前我写了一篇文章<定制ROM采坑之路(2):魔趣OS刷入小米5A手机过程详解>,在进行成功刷机后,我尝试将Xposed框架安装到我新刷的系统中了.因为我这里的操作是基于魔趣OS的, ...

  6. Xposed插件开发手册(2):Xposed插件开发入门

    前言 在上一篇文章<Xposed插件开发手册(1): Xposed框架的安装>,我们学习到了Xposed的安装,这篇文章我们就来做一个简单的Xposed模块,劫持我们写的App,整篇文章我 ...

  7. android+xposed插件,初探Xposed 插件开发

    1.之前手机上要是想要使用Xposed 功能必须root,然后我们并不想root,或者麻烦,偶尔看到了下面的APP,毫不犹豫用上了xpost 2.详细使用指南看官网把,简单就是单独开了个沙盒,不需要在 ...

  8. android hook 程序,Android hook框架之Xposed插件开发

    上一篇讲了Android hook框架Cydia,这一篇是Android hook的另一个框架Xposed,Xposed是一款广泛应用于安卓领域的开源框架. 其原理是Xposed框架主要通过替换/sy ...

  9. Xposed插件开发环境配置

    准备 已获得root权限的手机 Xposed Installer 安装运行环境 手机上安装Xposed Installer后打开,框架->安装/更新->重启 配置开发环境 android ...

最新文章

  1. 理解oracle中连接和会话
  2. ArcGIS中加载模块时dojo/domReady!和dojo/ready的区别
  3. System verilog随机系统函数$urandom使用方法
  4. 零基础学python图文版-如何快速创建投票页面 | 腾讯问卷怎么用_什么值得买
  5. 推荐几个清华和交大学霸公众号,值得学习
  6. 基于python+boostrap的学校图书馆管理系统
  7. 开发团队人员配备与角色分配
  8. Python0基础(中)——期末不挂科
  9. 10分钟学会发送邮件到指定邮箱
  10. 【微服务】Nacos注册中心
  11. Android程序水印效果
  12. java实现爬虫,爬取网易歌单信息
  13. 昨夜星辰昨夜风,只因见您在梦中
  14. SAP基底数据仓库实战项目(序章)
  15. 全差分运算放大器浅析
  16. 此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情
  17. 数据库原理-几种数据模型
  18. 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常
  19. C# 调用微软自带SpeechSDK 实现文字转语音
  20. 一些程序设计模式的整理

热门文章

  1. 草料二维码-免费的二维码生成工具
  2. 适合程序员使用的键盘有哪些?
  3. 就是美女,怎么了!!!
  4. react组件书写规范
  5. Kettle Carte简介
  6. require.context()的用法
  7. Pair:医学图像标注神器
  8. umass计算机硕士,麻省旗舰马萨诸塞大学阿默斯特分校 计算机科学强势
  9. 强化学习笔记: Model-based Approaches(1)
  10. 让Siri当你的管家,用iPhone玩转小米智能家居