开发者社区> 程序员诗人> 正文

Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP

简介: Xposed Xposed能够勾住(Hook) Android应用程序对象的方法,实现AOP,一个简单的例子: public class WebViewHook implements IXposedHookLoadPackage { // h...
+关注继续查看

Xposed

Xposed能够勾住(Hook) Android应用程序对象的方法,实现AOP,一个简单的例子:


public class WebViewHook implements IXposedHookLoadPackage {
    // handleLoadPackage 会在android加载每一个apk后执行
    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
           // 可以从lpparam中获取当前apk的名字
        if (! lpparam.packageName.equals("com.tencent.mobileqq")) {
            return;
        }
        XposedBridge.log("WebViewHook handleLoadPackage: " + lpparam.packageName);
        // 勾住 WebView 所有的构造器
        XposedBridge.hookAllConstructors(WebView.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                // 打开webContentsDebuggingEnabled
                XposedHelpers.callStaticMethod(WebView.class, "setWebContentsDebuggingEnabled", true);
                XposedBridge.log("WebViewHook new WebView(): " + packageName);
            }
        });
    }
}

上面的代码可以为QQ打开WebView的webContentsDebuggingEnabled

参考文档:

Xposed工作原理可以

https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
没有详细的API页面, 因为API也就几个,可以查看源代码: https://github.com/rovo89/XposedBridge/tree/master/src/de/robv/android/xposed

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
XAOP | 一个简易的AOP(Android)应用框架。
XAOP | 一个简易的AOP(Android)应用框架。
192 0
用kotlin打印出漂亮的android日志(三)——基于责任链模式打印任意对象
用kotlin打印出漂亮的android日志(三)——基于责任链模式打印任意对象
283 0
归纳AOP在Android开发中的几种常见用法
归纳AOP在Android开发中的几种常见用法
86 0
【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | dex_file.cc 中创建 DexFile 实例对象的相关函数分析 )
【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | dex_file.cc 中创建 DexFile 实例对象的相关函数分析 )
80 0
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析
108 0
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(二)
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(二)
70 0
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(一)
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(一)
152 0
【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )(一)
【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )(一)
227 0
【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )
【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )
142 0
【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )(二)
【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )(二)
83 0
+关注
程序员诗人
一个会写诗的程序员
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载