Xposed框架官方文档翻译(一)

本文翻译了Xposed框架官方文档的第一部分,详细介绍了如何创建一个Xposed模块,包括设置修改主题、方法挂钩替换的原理,以及模块实现的步骤,适合初学者入门。
摘要由CSDN通过智能技术生成

闲来无事翻译了一下Xposed框架的官方文档,希望对你们有帮助


好的。你想要学习如何创造一个新的Xposed模块?那你就阅读一下这篇教程(或者我们可以称其为广泛的文章)同时学会如何解决它。这里不仅包含“创建文件和插入模块”的技术,还思考了其背后更深层次例如一些有意义的步骤,还有一些你真的需要理解你做的事和你为什么做这件事的含义。如果你感觉像“TL;DR”,你可以仅仅只看在本文末尾的源码,然后阅读“Making the project an Xposed module”这个章节,但是通过阅读整片的教程,你将会有跟深入的理解。你将节约以后阅读这篇文章的时间,因为你不需要自己把所有事情都弄清楚。

The modification subject

你可以复现一个"red clock"项目的样例,该样例也可以在github上被找到
,该项目包括改变状态栏的时钟的颜色为红色,并添加一个笑脸符号。,我选择这个项目的原因是因为它很小,但很容易造成明显的改变,而且,它也使用了一些Xposed框架提供的基础的方法 。
How Xposed words
在开始你的修改之前,你应该粗略的了解一下Xposed框架是如何工作的(你可能会略过这个部分,如果你觉得无聊的话)(“我都无聊到来翻译文章了”)下面就是他的工作原理:
这里有一个进程叫做“Zygote”,它是安卓运行环境的心脏。每一个应用都以它的一个副本(“fork”)而成。这个进程在手机开启的时候运行一个/init.rc脚本。这个进程启动是通过/system/bin/app_process启动的,/system/bin/app_process负责加载必要的类和调用初始化方法 。
这就是Xposed框架发挥作用的地方,当你安装这个框架以后,一个继承了 app_process的可执行文件 就会被拷贝到/system/bin。这个继承了app_process启动过程添加了一个额外的jar包到路径中,而且调用了一些方法在某些地方。例如,仅仅在VM虚拟机被创建之后,Zygote进程就被调用了,甚至比main方法还要早。而且在这个方法内部,我们的Xposed是Zygote进程的一部分,而且可以在其环境中运行,这个jar包被安放在/data/data/de.robv.android.xposed.installer/bin/XposedBridge路径下,而且他的源码能在那里被找到,看看这个类(XposedBridge)(https://github.com/rovo89/XposedBridge/blob/master/src/de/robv/android/xposed/XposedBridge.java),你能看到main方法,这就是我上面所写的,他在进程中非常早的被调用,一些初始化在这里被执行而且一些模块也被加载(我稍后将会介绍模块加载)

Method hooking/replacing

能够“劫持”方法的调用可能给了Xposed框架动力真正的动力,当你通过反编译apk进行修改的时候,你能够直接的插入/改变命令语法按照你的意愿。然而之后,你同样将需要回编译/签名APK,而且你仅仅只能操作整个apk包,通过结合XPosed框架来使用hook技术,你不需要修改方法里面的代码(这里很难给你使用Xposed在哪些具体的地方做出了改变下清楚的定义),相反的你能注入自己的代码在方法之前或之后,这是一种最简便的解决方法在java中。
XposedBridge拥有private,native的hookMethod方法,这个方法实现通过继承app_process,它会改变方法的类型为“native”然后把该连接实现到自己的native方法和一般方法,那意味着无论什么时候只要被hook的方法被调用,普通方法将会被调用取代它,而且不让调用该方法的程序知道。比如这个XposedBridge里面的handleHookMethod方法被调用了,然后再传递参数到方法中被调用,例如传递this引用等等,然后这个方法会负责调已经为这个方法调用注册的回调,通过这些能改变调用方法使用的参数,改变实例/静态的变量,调用其他的方法,在返回的结果上做一些处理,或者跳过,略过任何的东西,总之,他是非常灵活的。
好的,这些理论已经足够了。现在让我们创建一个模块。

Creating the pr
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值