51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3382|回复: 0
打印 上一主题 下一主题

[原创] 被你放弃N次的Android框架,可以捡起来了

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:07
  • 签到天数: 1020 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-12-14 09:21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     摘要:Xposed(也被称作Xposed框架、XP框架、Xposed framework),是运行于Android操作系统的一个著名的免费开源Hook框架。其通过替换Android系统的关键文件,可以拦截几乎所有Java函数的调用,并允许通过模块扩展方式来实现各种功能,模块中的自定义代码可以更改调用函数时的行为,常被用来修改Android系统和应用程序的功能。用户可以在一些应用商店或其自带的下载库来下载安装各种模块,相比于重新安装系统来获得新功能,Xposed提供了一种更便捷的方式[1][2]。Xposed模块可以很容易的开启和关闭。你只需要激活或者禁用Xposed模块,然后重启手机即可。

     但如今,随着Android系统的不断更新,Xposed框架逐渐无法在新设备上运行。此时,EdXposed团队成为了后续版本研发的继任者。2019年1月,ElderDrivers完成了EdXposed的开发。EdXposed是一个Magisk模块,依赖于riru框架,成功将Xposed移植到了Android Pie上,成为最接近原版Xposed的框架。2019年9月,EdXposed正式支持Android Q。2020年1月,EdXposed与Xposed原开发团队达成共识,成为Xposed停止更新后的官方接任者[3]。
      EdXposed有如下几个特点:
      1. 完全支持Android Pie和Q,甚至也可以支持R。
      2.EdXposed具有“应用列表”模式。可以选择要应用Xposed模块进行hook的的应用程序,而系统中的其他应用程序在完全干净的环境中运行。
      3. EdXposed使用Riru注入,不修改libart和app_process。
      安装和使用
      对于Xposed,Xposed Installer是Xposed框架的官方安装器,可以在拥有root权限的设备上安装Xposed框架。Xposed Installer也提供模块的下载、管理、日志显示等功能[4]。鉴于Xposed已经不再适用于新的Android系统,并且网上已经有非常多的教程,在此就不再赘述了。下面着重介绍一下EdXposed的安装方法。
      由于框架的核心点是系统进程注入技术,需要拥有设备的root权限,而且针对不同型号的设备和系统版本需要选择正确的框架版本,满足条件才能安装。
      首先,我们需要解除手机的BL锁,对于不同品牌的手机,解锁方式有所不同。以小米手机为例,可以在官方网站进行申请,步骤较为简单[5]。
      其次,需要在手机上安装第三方Recovery,此处以TWRP为例。
      2.1. 下载并安装ADB/FASTBOOT支持,安装完成后启动手机进入fastboot模式,连接电脑。在命令行中输入fastboot devices并执行,如果显示当前的连接手机,则安装成功。
      2.2. 打开TWRP官网[6],在Devices页面选择自己的机型对应的TWRP安装包,例如小米6,进入后点击对应的下载链接:


     点击想要下载的版本,如twrp-3.4.0-0-sagit.img进行下载:

    下载完成后,在命令行中输入“fastboot flash recovery D:\twrp-3.4.0-0-sagit.img”(刚刚下载的twrp路径)并执行。
      提示刷入成功后,重启进入twrp Recovery页面,如小米是同时按开机键和音量上键进入。
      2.3. 下载Magisk的zip卡刷包和apk安装文件https://www.download-magisk.com),并使用数据线导入到手机中。在twrp首页,点击“安装”,选择刚刚下载的Magisk的zip包进行安装。

    安装成功后,重启系统,安装Magisk的apk管理软件。  打开Manager应该可以看到安装成功的页面。

    2.4. 参考EdXposed的官方文档的Install步骤[7],安装EdXposed:  2.4.1. 在Magisk Manager的“下载”中安装 Riru(Riru - Core)和 Riru - EdXposed 后重启手机。
      2.4.2. 下载安装EdXposed Manager[8],安装完成后打开可以看到EdXposed框架已激活。

     开发  本节中将介绍如何在AndriodStudio 4.0.1开发环境下创建一个简单的EdXposed模块。其实,EdXposed模块也是一个 Android 程序。与普通程序不同的是,编写EdXposed模块时需要完成以下4个任务:
      1)让手机上的EdXposed框架知道我们安装的这个程序是个EdXposed模块。
      2)模块里要包含有EdXposed的API的jar包,以实现下一步的Hook操作。
      3)这个模块里面要有对目标程序进行Hook操作的方法。
      4)要让手机上的EdXposed框架知道,我们编写的EdXposed模块中,哪一个方法是实现Hook操作的。
      下面开始按步骤进行:
      3.1. 新建项目,可以选择Empty Activity,进入项目页面,在项目目录中找到AndroidManifest.xml文件,插入如下代码:

     本步骤主要对Xposed模块进行声明。  3.2. 手机连接Android Studio,运行刚刚编写的代码,在手机里会安装一个app,同时,EdXposed框架中会显示出这个模块。

    3.3. 配置Xposed API的依赖。在AndroidStudio 4.0.1中,可以在项目目录中找到build.gradle,插入以下代码。完成之后,build.gradle会提示文件已经修改,点击 “sync now”进行同步。

    本步骤设置了jcenter作为代码仓库,直接从这个仓库里远程寻找de.robv.android.xposed:api:82 的API。  3.4. 下面打开activity_main.xml,在界面上加入一个button,并在MainAcitiviy里插入以下代码:

    本步骤在MainActivity界面上加入了一个按钮,打开app后点击按钮后会弹出一个toast提示,该提示的内容由 toastMessage() 方法提供,而toastMessage()的返回值为“我在正常运行”。  至此,我们已经搭建好一个app靶子,其中包含一个之后用来hook的按钮,在关闭和启动Xposed模块时会显示不同的toastMessage。
      3.5. 下面编写hook代码。在MainActivity的路径下新建一个类“HookTest.java”,插入以下代码:

     此处通过IXposedHookLoadPackage接口中的handleLoadPackage方法来实现Hook并篡改按钮的toastMessage。需要设置目标程序的包名,在XposedHelpers.findAndHookMethod中设置想要Hook的类和方法。在afterHookedMethod方法(用来定义Hook了目标方法之后的操作)中,修改了toastMessage()方法的返回值为“嘿嘿!你已被劫持!”,对应之前点击按钮后显示的文字提示。  3.6. 下面设置Xposed模块入口。在main文件夹中新建assets文件夹,并在其中新建文件xposed_init,文件类型text,并在其中填写刚刚编写的hook类路径“com.example.test.HookTest”。此时,EdXposed框架就能够从这个 xposed_init 读取信息来找到模块的入口,然后进行Hook操作了。
      3.7. 在File -> Settings -> Build, Execution, Deployment ->Debugger找到hotSwap,把Enable hotswap的勾去掉。
      3.8. 点击“运行”!在EdXposed框架里找到自己写的模块,打上勾启动模块,重启手机。
      3.9. 打开app点击按钮显示劫持成功。

    总结  本文介绍了EdXposed框架的前世今生,安装使用和模块编写,而EdXposed框架的强大不止于此,更多功能大家有兴趣可以自己体验。
      Reference:
      [1].https://www.xda-developers.com/xposed-framework-hub/
      [2].https://github.com/rovo89/Xposed ... al#how-xposed-works
      [3].https://zh.wikipedia.org/zh-hans/Xposed_(%E6%A1%86%E6%9E%B6)
      [4].https://repo.xposed.info/module/de.robv.android.xposed.installer
      [5].http://www.miui.com/unlock/index.html
      [6].https://twrp.me/
      [7].https://github.com/ElderDrivers/EdXposed
      [8].https://github.com/ElderDrivers/EdXposedManager/releases








    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-19 06:33 , Processed in 0.071637 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表