zoukankan      html  css  js  c++  java
  • Xposed 插件开发入门教程(一)

    其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下。

    要使用 Xposed 插件,首先要 root 手机并安装 Xposed 框架,这个是必须的(Xposed 安装相关教程请自行百度吧)。不过现在有一个 VirtualXposed 可以免 root 使用 Xposed,本人没有用过,就不多介绍了,有兴趣的朋友可以去搜索了解一下,下面就进入我们的 Xposed 插件开发教程。

    步骤一:创建一个 Android 应用

    打开 Android Studio 并创建一个 Android 应用,其实 Xposed 插件也是一个普通的 app,只不过需要添加一些额外的配置,以便 Xposed 能够识别这些插件,这个似乎没什么好说的,我就不啰嗦了。

    步骤二:添加 Xposed 插件相关配置

    首先在项目的 app 目录下的 build.gradle 文件中添加如下配置:

    dependencies {
        compileOnly 'de.robv.android.xposed:api:54'
    }

    其中 dependencies 表示项目的依赖项;compileOnly 表示此此包仅编译时使用,不会将相关代码打包进 apk;后面的数字 54 表示要支持的 Xposed 版本,这个可以根据需要自行调整。

    接着在 AndroidManifest.xml 中按如下代码配置:

    <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="xposeddescription"
    android:value="description" />
    <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>

    主要就是添加 3 个 meta-data 元素,其中 xposedmodule 表示此应用是一个 Xposed 插件;xposeddescription 为此插件的描述,插件安装后在 Xposed 插件页面可以看到此描述文本;而 xposedminversion 则表示要求的 Xposed 最低版本,通常这个字段要和前面的依赖项版本号相同。

    步骤三:创建 Hook 类并实现相关代码

    新建一个类,假设命名为 XposedInit,让此类实现 IXposedHookLoadPackage 接口,代码如下:

    public class XposedInit implements IXposedHookLoadPackage {
    	
        @Override
        public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
            XposedBridge.log("Loaded app: " + lpparam.packageName);
        }
    }

    这里先打印一个 log 吧,具体的 hook 代码以后有时间再写篇博客,这里就不写了,不然这博客写不完了。

    步骤四:配置 xposed_init

    在 assets 目录下新建一个名为 xposed_init 的文件(文件名必须是这个,且无后缀),并将相关 hook 类的全限定名称写入此文件中,如有多个类,则每行写一个,如:

    xxx.xxx.XposedInit

    这一步是告诉 Xposed 我们的 hook 类是哪些,要不 Xposed 找不到我们的类就无法完成 hook 操作了。

    步骤五:编译插件并安装到手机

    使用 AndroidStudio 编译并生成签名的 apk 文件,然后安装到手机中,如无意外,Xposed 会提示我们插件已安装,并询问是否要开启插件并重启手机,重启后打开 Xposed 的日志界面就可以看到我们的插件输出的 log 了。

  • 相关阅读:
    Android内核sys_setresuid() Patch提权(CVE-2012-6422)
    Android驱动中的remap_pfn_range()校验漏洞(CVE-2013-2596)
    Android内核栈溢出与ROP(CVE-2013-2597)
    从android设备中提取内核
    Android: protecting the kernel
    Linux Kernel Stack
    Android 1.5-7.0(持续更新)安全机制一览
    stack-protector-strong
    ANDROID init进程
    mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决
  • 原文地址:https://www.cnblogs.com/andorxor/p/9347820.html
Copyright © 2011-2022 走看看