xposed插件_xposed插件开发 - CSDN
精华内容
参与话题
  • https://repo.xposed.info/module/de.robv.android.xposed.installer http://repo.xposed.info/module/com.lanyus.blocksecureflag https://repo.xposed.info/module/fi.veetipaananen.android.disablefl...

    一、下载安装包

    https://repo.xposed.info/module/de.robv.android.xposed.installer

    http://repo.xposed.info/module/com.lanyus.blocksecureflag

    https://repo.xposed.info/module/fi.veetipaananen.android.disableflagsecure

    二、安装设置

    先在手机上安装xposed,然后安装blocksecureflag,安装完成后有自动跳转到设置页面。

    勾选需要阻止添加FLAG_SECURE标志的app,涉及付款的app不建议拦截。

    也安装disableflagsecure未验证,在xpose中选中

    三、实证

    在乐视x620,Android6手机中,xpose提示不兼容arm64-v8a

    使用appium做自动化测试,选中需要被自动化测试的软件,仍然被限制截屏

    四、其它

     

    展开全文
  • Xposed

    一、Xposed简介

    Xposed,简单点说就是一款Hook框架,可以在不修改APK源码的情况下,通过自己编写的模块来影响程序运行的框架服务,采用了插件机制,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。基于Xposed框架可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

    强制安利–Xposed源码解析系列安卓注入框架Xposed分析与简单应用

    二、Xposed使用前准备工作

    1)获得root权限的手机
    2)安装Xposed Installer

    安装时注意事项:
    1、Xposed针对Android系统发布了不同的版本,要根据自己手机的版本下载对应的Xposed框架,附Xposed Installer下载地址
    2、手机出现不兼容问题,那么检查下是不是版本下错了
    3、下载安装框架后,提示not a flashable zip file 或者unzip:crc error(也就是解压错误),这个时候你可以点击菜单栏,选择show outdated versions(也就是显示历史版本),下载旧的版本尝试,如果还不行就直接下载对应的zip文件,进入recovery也就是刷机模式,硬刷到系统中

    点击安装更新,下载安装框架

    安装成功后,是这个样子的

    安装后会重启手机,重启后Xposed就生效了。我用的Android5.0之上的系统,对于4.x版本的,需要下载对应的版本就可以了
    OK,然后接可以写模块了

    三、Xposed简单使用

    1、创建Android项目

    一个Xposed模块实际上就是一个正常的apk,只不过没有和用户交互的界面,它仅仅包含以下meta数据和文件,并且安装后没有桌面应用图标,所以创建一个空项目就可以了,不需要Activity。

    2、Android中使用Xposed

    Android中使用Xposed方法,官方文档

    Android Studio中使用:

    大家都知道,以前需要再eclipse导入jar包,而在Android Studio中只需要在app/build.gradle文件中添加依赖就可以使用了

    当然也可以在AS中导入jar包,放在lib文件夹下,右键add as library…就可以了。

    Eclipse中使用:因为我已经不用elipse了,所以这里就给出jar包的下载地址。点我下载Xposed需要的jar包

    导入依赖成功后,就可以开始写模块了,首先要在AndroidManifest.xml中配置

     <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.test.happy.xposedt">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
    
            <!-- 应用为模块 -->
            <meta-data
                android:name="xposedmodule"
                android:value="true" />
    
            <!-- 版本信息 -->
            <meta-data
                android:name="xposedminversion"
                android:value="82" />
    
            <!-- 模块描述 -->
            <meta-data
                android:name="xposeddescription"
                android:value="Xposed Test" />
        </application>
    
    </manifest>

    声明程序入口,新建assets文件夹—>新建文件xposed_init,在该文件中,进行如下配置,包名+类名,类是实现了XposdMod接口子接口的类

    com.test.happy.xposedt.Main

    在模块中创建类Main,(类名和xposed_init文件中配置的保持一致即可,可以随意取名)。具体实现XposdMod接口的哪个子接口取决于,你想做的操作。

    接口IXposedHookLoadPackage(一个新的app被加载时)
    接口IXposedHookZygoteInit (安卓系统启动时)
    接口IXposedHookInitPackageResources (资源被初始化时)

    这里就简单的hook下微信的启动页,打印下日志看看效果

    public class Main implements IXposedHookLoadPackage {
         @Override
        public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam)
                throws Throwable {
    
            if (!loadPackageParam.packageName.contains("com.tencent.mm")) {
                return;
            }
            XposedHelpers.findAndHookMethod("com.tencent.mm.ui.LauncherUI", loadPackageParam.classLoader,
                    "bUn", new XC_MethodHook() {
    
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);
                            Log.e("Xposed", "开始hook>>>>启动的应用包名" + loadPackageParam.packageName);
    
                        }
    
                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            super.afterHookedMethod(param);
                            XposedBridge.log("成功hook>>>>启动的应用包名" + loadPackageParam.packageName);
    
                            Log.e("Xposed", "成功hook>>>>启动的应用包名" + loadPackageParam.packageName);
                        }
                    });
    
    
        }
    }

    XposedBridge.log()是把写入标准的logat中(data/data/de.robv.android.xposed.installer/log/debug.log)
    至此,Xposed基本的使用就结束了
    运行结果:
    在模块中选中自己写的模块,重启手机,连接AS,可看到日志的输出:

    展开全文
  • xposed微信插件大全

    2019-07-25 13:23:52
    xposed框架-微信二次开发【微信插件】 基于xposed框架的微信二次开发模块,方便开发者用微信做一些扩展功能(如微信机器人、微信群发、多群转播(直播)等。。。)目前支持功能:发文本消息发图片消息发语音消息...

    xposed框架-微信二次开发【微信插件】

    基于xposed框架的微信二次开发模块,方便开发者用微信做一些扩展功能(如微信机器人微信群发、多群转播(直播)等。。。)
    目前支持功能:
    发文本消息
    发图片消息
    发语音消息
    获取微信好友列表
    群列表
    支持群发消息
    [注:本模块为开发版,是用于开发者做二次开发的,所提到的功能只是提供接口,并不是安装模块就可以使用这些功能,开发者可以使用这些接口来开发相应功能的软件,如果你不是开发者,请下载提供的示例软件测试相关功能]
    更多功能更新中。。。

     

    微信模块 http://repo.xposed.info/module/com.easy.wtool 


    微信机器人demo下载地址:https://github.com/weechatfly/wtoolsdkrobot/raw/master/%E5%BE%AE%E4%BF%A1%E6%9C%BA%E5%99%A8%E4%BA%BA-wtoolsdkDemo.apk

     

    加QQ群:153770839 讨论群 

    转载于:https://www.cnblogs.com/qx666/p/6402454.html

    展开全文
  • 在上一篇文章《Xposed插件开发手册(1): Xposed框架的安装》,我们学习到了Xposed的安装,这篇文章我们就来做一个简单的Xposed模块,劫持我们写的App,整篇文章我参考了官网的教程来编写。 环境参数 虽然之前的文章...

    前言

    在上一篇文章《Xposed插件开发手册(1): Xposed框架的安装》,我们学习到了Xposed的安装,这篇文章我们就来做一个简单的Xposed模块,劫持我们写的App,整篇文章我参考了官网的教程来编写。

    环境参数

    研发环境

    • 操作系统:MacOS Mojava
    • IDE:Android Studio 3.2
    • Gradle:gradle-4.6-all.zip

    手机参数

    • 操作系统:魔趣OS 8.1
    • 手机:Redmi 5A
    • Xposed installer : XposedInstaller_3.1.5.apk
    • Xposed : xposed-v90-sdk27-arm64-beta3.zip
    • Xposed bridge version: 82

    上面已经列出了环境参数,如果哪里不清楚可以留言给我修改。

    开始研发

    新建项目

    新建一个Xposed的项目,环境配置为5.0
    在这里插入图片描述
    在这里插入图片描述

    创建一个MainActivity

    • activity_main.xml
      布局中只包含一个按钮
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hook监测"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </android.support.constraint.ConstraintLayout>
    
    • MainActivity.class
      代码中只做了一个点击监听操作。
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, toastMessage(), Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        public String toastMessage() {
            return "按钮未被劫持";
        }
    
    }
    

    配置XposedBridge

    XposedBridge中包含了编写Xposed插件的java代码用于调用Xposed环境中提供的功能。

    • 下载两个Xposed API
      • api-82-sources.jar: 包含源码的
      • api-82.jar: 不包含源码
        在这里插入图片描述

    我们将下载好的api-82.jar复制到Android Studio的libs目录下,在gradle中加载我们的jar包。

    dependencies {
        compileOnly fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        compileOnly 'de.robv.android.xposed:api:82' // 添加这一行且必须是 compileOnly
        compileOnly 'de.robv.android.xposed:api:82:sources'
    }
    

    注意compileOnly fileTree(dir: 'libs', include: ['*.jar'])这行代码,compileOnly命令只在编译时期打包进入,原因是Xposed里已有该jar包内容,再次打包进去会冲突。

    ps: 上面那个修改很重要,不修改就会导致handleLoadPackage没有回调,具体参考《Using the Xposed Framework API》

    修改AndroidManifest.xml文件

    在Application标签里面添加三个meta-data,当我们安装的时候Xposed框架会检验信息,并且判定次App是Xposed插件。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.martin.xposed">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
    
            <!-- 是否是xposed模块,xposed根据这个来判断是否是模块 -->
            <meta-data
                android:name="xposedmodule"
                android:value="true" />
    
            <!-- 模块描述,显示在xposed模块列表那里第二行 -->
            <meta-data
                android:name="xposeddescription"
                android:value="This is a Xposed Module Demo" />
    
            <!-- 最低xposed版本号(lib文件名可知) -->
            <meta-data
                android:name="xposedminversion"
                android:value="54" />
    
    
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

    编写Xposed插件

    • 创建HookMain.java文件实现IXposedHookLoadPackage入口,这里是你的插件入口,参考Javadoc
    public class HookMain implements IXposedHookLoadPackage {
    
        /**
         * XposedBridge.log():以原生logcat的形式写入到/data/user_de/0/de.robv.android.xposed.installer/log/error.log
         */
        @Override
        public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
            if (loadPackageParam.packageName.equals(BuildConfig.APPLICATION_ID)) {
                Class clazz = loadPackageParam.classLoader.loadClass("com.martin.xposed.MainActivity");
                XposedHelpers.findAndHookMethod(clazz, "toastMessage", new XC_MethodHook() {
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        super.beforeHookedMethod(param);
                        XposedBridge.log("Hook成功");
                    }
    
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        param.setResult("按钮已被劫持");
                    }
                });
            }
        }
    
    }
    
    

    上面看代码很明显,是针对我们的MainActivitytoastMessage方法进行劫持。beforeHookedMethod方法,是在我们toastMessage运行前会调用,afterHookedMethod方法,在我们方法运行后调用。

    编写插件入口配置文件Xposed_init

    • assets/xposed_init
      首先创建项目中的assets目录
      在这里插入图片描述
      创建一个文件(这里不需要任何后缀名),将我们的HookMain完整包名填写到文件中。
      在这里插入图片描述
    com.martin.xposed.HookMain
    

    取消instant Run

    在安装之前,需要配置取消IDE的instant run,如果不配置会监测不到你的入口。原因如下:

    Please make sure to disable Instant Run (File -> Settings -> Build, Execution, Deployment -> Instant Run), otherwise your classes aren’t included directly in the APK, but loaded via a stub application which Xposed can’t handle.

    在这里插入图片描述

    运行

    接下来,我们就可以直接运行我们的插件了,点开我们安装的Xposed installer的模块可以看见我们开发的插件已经被检测到了。
    在这里插入图片描述
    重启下手机生效,点击按钮查看我们的劳动成果。
    在这里插入图片描述

    小结

    总结下步骤:

    • 编写功能点
    • 使用XposedBridge对功能点进行劫持。
    • 配置插件入口文件

    其实这篇入门文章大部分都是编写配置文件并没有使用太多API,大家细心点配置就没什么问题了,我把项目上传到Github了不想编写的,自己下载运行就好了。关于原理的讲解,大家可以参考这篇文章《深入理解 Android(三):Xposed 详解》目前是我找到的比较好的国内资料。

    参考文献

    展开全文
  • 微信辅助应用,具有如下功能: ·自动抢红包 ·一键转发朋友圈的文章 ·雷达加好友 界面中自动添加好友 ·一键添加附近的人为好友 ·虚拟当前位置,想在哪里就在哪里 ·发送手机中的小视频到朋友圈 ...
  • [Android开发] Xposed 插件开发之一: Xposed入门

    万次阅读 多人点赞 2016-09-18 17:04:30
    它是一款特殊的安卓App,其主要功能是提供一个新的应用平台,玩家们安装Xposed框架后,就能够通过Xposed框架搭建起的平台安装更多系统级的应用,实现诸多神奇的功能。 Xposed框架的原理是修改系统文件,替换了/syst
  • Xposed Installer 安装运行环境 手机上安装Xposed Installer后打开,框架-》安装/更新-》重启 配置开发环境 android Studio新建android项目 AndroidManifest文件中写入配置信息 &lt;meta-data ...
  • 因为工作上的原因需要分析某个软件将网络下载的文件解压到那个路径,通过比对文件夹大小很难定位到具体位置,所以考虑使用xposed插件来做,因为没有现成的,所以只能自己动手来做一个了 需要如下准备工作 1.刷入...
  • 其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下。 要使用 Xposed 插件,首先要 root 手机并安装 Xposed 框架,这个是...
  • 初探Xposed 插件开发

    2020-08-03 19:35:31
    初探Xposed 插件开发 2019年5月30日 来源:Lazy1 1.之前手机上要是想要使用Xposed 功能必须root,然后我们并不想root,或者麻烦,偶尔看到了下面的APP,毫不犹豫用上了xpost http://vxposed.com/ 2.详细使用指南看...
  • xposed插件监控微信项目源代码 附带视频教程 https://www.bilibili.com/video/av50740740 可以先看效果 再 下载
  • 1. Xposed插件Hello World 新建工程:MyXposed 引入xposed: provided 'de.robv.android.xposed:api:82' provided 'de.robv.android.xposed:api:82:sources' 官方链接 修改AndroidManifest 在AndroidManifest中...
  • Xposed插件 - Android一键脱壳工具 (必须获取root权限) 特性 支持Android4.0至7.1 支持模拟器及vmos 界面美观交互良好 一键脱全壳 并自动修复DexHeader magic 测试可脱(360加固)(爱加密),其余还未测试 ...
  • 但是似乎没有一个针对xposed插件加固的方案,笔者在试用了几家加固后,均会导致xposed插件的崩溃,要么就是插件功能失效,又或者运行性能大大影响导致App拦截的时候巨卡。 迫于无奈,对于本身就是安全从业者的笔者来...
  • Xpatch用来重新签名打包Apk文件,使重打包后的Apk能加载安装在系统里的任意Xposed插件,从而实现免Root Hook任意App。 源码 https://github.com/WindySha/Xpatch Xpatch基本原理 Xpatch的原理是对Apk文件进行二次...
  • Xpatch用来重新签名打包Apk文件,使重打包后的Apk能加载安装在系统里的Xposed插件,从而实现免Root Hook任意App。
  • 手机开启全局调试ro.debuggable...今天给介绍一个xposed插件来实现 手机的全局调试 原理,反正是frame java曾,管他什么hook就行。 再Zygote fork进程之前hook 修改runtimeFlags ,打开全局调试就可以。具体hook点查...
  • Xposed插件开发

    2018-07-03 12:14:59
    Xposed插件开发(一)简单demo xposed下载地址:http://repo.xposed.info/module/de.robv.android.xposed.installer xposed开发包源码:https://github.com/rovo89/XposedBridge.git xposed简易demo:...
  • 本文同步自 wing的地方酒馆Xposed框架是个好东西,有各式各样的插件提供给大家把玩,比如改个通知栏颜色啊,抢个红包啊,防个撤回啊啥的。非常实用。不过这些功能的背后,带来的可能是一系列安全隐患,因为Xposed拿...
  • 为什么80%的码农都做不了架构师?>>> ...
1 2 3 4 5 ... 20
收藏数 1,749
精华内容 699
关键字:

xposed插件