Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的虚拟机的劫持。基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.与 iOS 越狱后的插件相似。由于涉及到修改系统,所以如果调教不当,很可能会使你的手机变成砖

搭建Xposed环境花了很久,特此整理出一个捷径给小伙伴们。不要在为了刷第三方Recovery烦恼,不要再为手机root烦恼,也不要再为安装Xposed烦恼,直接下载一个root好的,包含XP框架的Rom包,直接装入即可。

以下是使用AS开发自己的Xposed插件
初次在Android studio中使用Xposed,以下是流程,不要粗心,少一步都是失败的。至于原理的分析,我就不做整理,毕竟自己弄懂了之后还抽不出来整理。

首先准备好XposedBridgeApi的jar包。
拿走不谢
链接:https://pan.baidu.com/s/1mi7onQo 密码:v8ci

新建Xposed框架工程,注意此工程无Activity
将jar包放在工程lib文件夹中,并在AndroidManifest.xml文件中添加如下内容:

<!-- xposed模块开关,默认true就行 --><meta-data
            android:name="xposedmodule"android:value="true" /><!-- 提示文字 --><meta-data
            android:name="xposeddescription"android:value="一个登陆劫持的样例" /><!-- 最低版本支持 --><meta-data
            android:name="xposedminversion"android:value="87" />

另外新建一个被劫持的工程。此工程就是我们需要的登录界面和逻辑的工程

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditText
        android:id="@+id/et1"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入你的账号"/><EditText
        android:id="@+id/et2"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入你的密码"/><Button
        android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="my_onClick"android:text="登陆"android:textSize="26dp"/></LinearLayout>

以上是布局代码,以下是MainActivity代码

package com.zhonghao.test1;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {private EditText mEditText;private EditText mEditText1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mEditText = (EditText) findViewById(R.id.et1);mEditText1 = (EditText) findViewById(R.id.et2);}public void my_onClick(View view) {String username = mEditText.getText().toString();String password = mEditText1.getText().toString();if(CheckRegister(username,password)){Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_SHORT).show();}else {Toast.makeText(MainActivity.this,"登陆失败",Toast.LENGTH_SHORT).show();}}private boolean CheckRegister(String username, String password) {return username.equals(password);}
}

ok,被劫持的工程准备完毕,此工程可以安装到手机上了,下面回到XP框架工程
jar包添加之后,不要忘记配置。在app的build中特别注意此处

将compile改为provided,不改的话会怎么样,你自己试试呗,肯定报错

下一步我们需要告诉Xposed框架模块的主入口类,也就是这里的com.zhonghao.hooktest.Main
添加一个assets文件夹:右键点击 app这个module –> new –> Folder –>Assets Folder,然后确认即可。
在assets中new一个file,文件名为xposed_init,并在其中写上入口类的完整路径
文件里 将路径写上即可

com.zhonghao.hooktest.Main

下面,新创建一个类
Main

我们的模块所要实现的功能就是劫持登录的账号密码,然后显示在手机上Xposed框架的日志里以及打印在Logcat控制台上。
新建一个Main类,并实现IXposedHookLoadPackage接口,并实现IXposedHookLoadPackage接口中的handleLoadPackage方法

package com.zhonghao.hooktest;import android.util.Log;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;import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;/*** 项目名称:HookTest* 包名:com.zhonghao.hooktest* 创建人:小豪* 创建时间:2017/1/26 14:15* 类描述:*/public class Main implements IXposedHookLoadPackage {//被HOOK的程序的包名和类名String packName = "com.zhonghao.test1";String className = "com.zhonghao.test1.MainActivity";/*** 获取包加载时候的回调*/@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {// 将包名不是 com.zhonghao.test1 的应用剔除掉,此处要特别注意,我们只想hook住需要的包名if (!loadPackageParam.packageName.equals("com.zhonghao.test1"))return;XposedBridge.log("Loaded app: " + loadPackageParam.packageName);// replaceHookedMethod 替换方法// beforeHookedMethod 方法前执行// afterHookedMethod 方法后执行// 处理是的情况// 找到对应类的方法,进行hook,hook的方式有两种findAndHookMethod(className,     // 类名loadPackageParam.classLoader, // 类加载器"CheckRegister", // 方法名String.class,   // 参数1String.class,   // 参数2new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("开始劫持了! ");XposedBridge.log("参数1 = : " + param.args[0]);XposedBridge.log("参数2 = : " + param.args[1]);Log.d("xposedplugin", (String) param.args[0]);Log.d("xposedplugin", (String) param.args[1]);}@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("劫持结束了! ");XposedBridge.log("参数1 = : " + param.args[0]);XposedBridge.log("参数2 = : " + param.args[1]);Log.d("xposedplugin", (String) param.args[0]);Log.d("xposedplugin", (String) param.args[1]);}});}}

到此就完成了。然后这个没有activity的工程,签名打包生成apk装到手机上。为什么不能直接装?没主界面无法运行。so.安装完之后,在Xposed框架里点击模块勾中你的应用,然后重启手机即刻生效。最后的效果如下


对于实现原理想要方便的同学直接查看Xposed框架hook原理

到此一个初次见面就完成了,之后是开发自己所需的高端的Xposed框架,带我完成之后再分享给大家!


最近才更新,我的建议大家还是自己刷入Xposed吧,因为rom自带的问题很多。我这里把获取系统权限的superSu给大家,还有XposedInstaller,以及ReExplore文件浏览器。 XposedInstaller里边直接点击下载框架,然后也是进入recover界面相应目录下刷进去。


superSu下载
XposedInstaller下载
RootExplore下载

Xposed框架初次见面-开发自己的Xposed插件相关推荐

  1. xposed框架定位模块_Xposed模块开发基本方法记录

    由于某些课程实验的要求,需要通过xposed框架对某应用进行hook操作,笔者选用了开源且免费的xposed框架进行实现.虽然网上存在一些利用xposed实现特定功能的文章资源,但大多均将xposed ...

  2. Android之Xposed框架完全使用指南

    文章目录 Xposed环境搭建 Xposed简介 Xposed原理 Xposed的安装 Xposed插件开发 Xposed插件编写流程 Xposed开发之Hook构造函数 相关API 无参构造函数的h ...

  3. 万物皆可 Hook,探究 Xposed 框架 Hook 原理

    作者 |俞家欢 低头需要勇气,抬头需要实力 引言 平时用着 Android 手机,喜欢折腾的同学或多或少都接触过 Xposed 框架,解锁.Root.刷包,一气呵成.本文将从原理和实践两部分带大家了解 ...

  4. 最简单红米系统一键激活xposed框架教程

    对于频繁玩机的朋友来说,xposed框架绝对都不陌生,不少功能牛逼的APP都基于xposed框架下工作,但对于不少入门屌丝来说,却频繁不知道这是个什么框架,一听到xposed框架激活异常烦恼,恰好近期 ...

  5. xposed框架在分机安装失败_免root用Xposed框架!安卓用户一定要学会

    相信经常玩机的小伙伴,一定对安卓系统上的Xposed框架比较熟悉. 基于Xposed框架,我们可以给手机增加各种强大的应用模块,如模拟位置.自动抢红包.微信消息防撤回等等. 可惜的是,要使用Xpose ...

  6. Android 集成Xposed框架

    前言 Xposed(框架) Xposed框架(Xposed Framework)是一套开源的.在Android高权限模式下运行的系统框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框 ...

  7. (亲测有效)荣耀手机一键激活Xposed框架方法

    对于频繁玩机的哥们而言,xposed框架肯定都不陌生,许多功能高深莫测的app都基于xposed框架下工作,但对于许多新手朋友而言,却频繁不懂这是个什么东西,一听到xposed框架激活异常纳闷,恰好近 ...

  8. 最简单小米机器一键激活XPOSED框架教程

    对于经常研究安卓的朋友而言,XPOSED框架肯定都不陌生,太多功能强大的APP都基于XPOSED框架下启用,但对于太多入门朋友而言,却经常搞不懂这是个什么框架,一听到XPOSED框架激活真心纳闷,刚好 ...

  9. Fiddler利用Xposed框架+JustTrustMe抓取手机APP数据

    文章目录 1. Xposed安装 2. JustTrustMe安装 3. 确保Fiddler在模拟器里配置 此文只是针对Fiddler抓取APP数据失败情况下的方案,主要想解决的是安卓手机APP抓包H ...

最新文章

  1. 自动化测试(二) 单元测试junit的Test注解突然不能使用原因以及解决方案
  2. 从零开始学Pytorch(十一)之ModernRNN
  3. 静态函数 静态变量和常量
  4. 腾讯会议开放API接口,为企业打造专属的“腾讯会议”
  5. iOS UIDatePicker设置为中文的方法
  6. 【转载】8天学通MongoDB——第八天 驱动实践
  7. 09. 斐波那契数列(C++版本)
  8. Java HashMap原理
  9. win10永久设置护眼颜色
  10. IMWeb小白-诗歌作业
  11. pdf转换成jpg python_Python 将pdf转成图片
  12. R语言使用survival包的Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、使用step函数基于AIC指标进行逐步回归法cox模型特征筛选(变量筛选)
  13. Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用
  14. git(2)Git 基础
  15. Java课程设计——仓库商品管理系统
  16. Visual Paradigm社区版安装教程
  17. 收发EtherCAT帧——ecx_getindex函数
  18. 使用js格式化json
  19. can-utils使用
  20. 理解 ROC 和 PRC

热门文章

  1. Android 网星工具箱Beta版
  2. Android 12 悬浮通知/横幅通知状态栏应用图标显示不全
  3. 如何开启全新旅途,实现旅游市场活力复苏
  4. Java实现机器人用户随机上线
  5. 如何使用Win10自带的录屏功能以及如何查找到视频存放的位置
  6. 使用Xposed去除微博国际版的启动广告
  7. 网络营销中促销的含义、特点和功能
  8. SCI常用词语及技巧 - 易智编译EaseEditing
  9. 【转】纯JS省市区三级联动(行政区划代码更新至2015-9-30)
  10. AWS为什么能成功?