抱歉,Xposed真的可以为所欲为——1.基础知识储备(上)

简介: 本节简单介绍了什么是Xposed,基本原理,如何创建一个Xposed项目以及Xposed常用的类与方法。

1.Xposed是什么


一个很牛逼的框架,可以在不修改APK的情况下影响程序的运行,比如: 直接把APP的界面改成自己想要的样子,去掉界面里不喜欢的东西, 自动抢红包,消息防撤回,步数修改等等;简直酷得不行,网上有 很多插件作者开发出来的优秀插件,随手打开Xposed Installer下载 就有很多:



插件用起来是挺爽的,不过呢,因为Xposed拥有最高权限,如果不法分子 在插件里植入了恶意代码,比如登录劫持,偷偷采集你的账号密码发送到 他们的手里,如果涉及到了金钱,就很恐怖啦,所以在使用Xposed插件的时候, 尽量选那些开源的,并进行代码review,看是否存在恶意代码,再进行安装体验 (开源不一定就没问题,之前有个抢外卖红包的开源项目在里面加了一段挖矿代码, 令人窒息的操作!)


大概简述下Xposed的原理吧,后面有一节会专门研究源码~


Android基于Linux,第一个启动的进程自然是init进程,该进程会 启动所有Android进程的父进程——Zygote(孵化)进程,该进程的启动配置在/init.rc脚本中,而Zygote进程对应的执行文件是**/system/bin/app_process**, 该文件完成类库的加载以及一些函数的调用工作。在Zygote进程创建后, 再fork出SystemServer进程和其他进程。


而Xposed Framework呢,就是用自己实现的app_process替换掉了系统原本 提供的app_process,加载一个额外的jar包,然后入口从原来的:

**com.android.internal.osZygoteInit.main()**被替换成了:

de.robv.android.xposed.XposedBridge.main(), 然后创建的Zygote进程就变成Hook的Zygote进程了,而后面Fork出来的进程 也是被Hook过的。这个Jar包在: /data/data/de.rbov.android.xposed.installer/bin/XposedBridge.jar


大概原理就是这样,源码我还没去撸,后面会研究一波,有说错的再回来改。 另外使用Xposed模块是需要Root权限的,怎么Root,安装这个框架, 网上的教程很多,不在本系列研究范围以内!


相关文档:






然后是Xposed Installer,由于Android 5.0以上采用ART,而5.0以下默认采用Dalvik, 所以是有两个版本的Xposed,附上下载链接:Android 4.0.3-4.4

repo.xposed.info/module/de.r…Android 5.0以上:forum.xda-developers.com/showthread.…


PS:点下面这两个地方即可下载:



2.创建一个Xposed工程


接着演示一波如何创建一个Xposed工程


  • Step 1:新建一个工程,然后修改下AndroidManifest.xml,增加下面的代码:



  • Step 2build.gradle文件添加库依赖



可能会有的疑问:provided只提供编译支持不会写到apk里!!! 别手贱改成compile,装上打开后会报错的!


  • Step 3res/asserts文件夹创建一个xposed_init文件


XposedBridge会从assets 目录中的xposed_init文件中获取入口点,比如我的:



  • Step 4编写我们的入口点类


在此之前我们先修改下我们的MainActivity.java,修改下TextView显示的文字:



代码很简单,就是设置成"渣渣辉"而已,接着编写我们的Xposed入口类:

XposedInit.java



继承了IXposedHookLoadPackage接口,重写了handleLoadPackage方法, 判断了下包名,如果是的,XposedHelpers.findAndHookMethod(), hook掉onCreate()方法,XC_MethodHook()重写afterHookedMethod, 当onCreate()执行后会回调这个方法,在这里获得TextView对象, 把文字修改成"贪玩难约",接着运行,安装后需要重启设备。


重启后,打开应用,查看是否生效:



生效了,log也能看到打印出来的日志:



注意事项:


在运行Xposed之前,记得把InstallRun的钩钩去掉哦!



每次运行都需要重启手机哈~ 知道怎么创建一个Xposed项目后,接着就到API解释了!


相关文章
|
6月前
|
缓存 分布式计算 算法
码农死磕这份Java高级开发文档,成功'挤'进一线大厂,这也太强了吧
拿到一份offer比什么都重要,所以笔者专门花了近一个月的时间整理好了一份专门为Java面试而生的总结,注意的是笔者仅仅对面试技术方面的题目进行的总结,至于如何去和面试官去聊,怎么聊,聊得嗨,这里笔者就不谈了,因为这方面并不是笔者擅长的。
|
安全 搜索推荐
下载软件别再被套路!教你避开流氓下载器的坑!
安装之前,可以看到界面中明显的提示:“使用360安全导航”、“ABC看图”,这两处旁边还有复选框,细心的你肯定知道要把这两个复选框去掉。
179 0
下载软件别再被套路!教你避开流氓下载器的坑!
|
4月前
|
SQL 安全 算法
爆赞!终于有大佬把网络安全零基础入门教程给讲明白了!
网络安全的一个通用定义指网络信息系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的破坏、更改、泄露,系统能连续、可靠、正常地运行,服务不中断。网络安全简单的说是在网络环境下能够识别和消除不安全因素的能力。 网络安全在不同环境和应用中有不同的解释,例如系统运行的安全、系统信息内容的安全、信息通信与传播的安全等。 网络安全的主体是保护网络上的数据和通信的安全,数据安全性是指软硬件保护措施,用来阻止对数据进行非授权的泄漏、转移、修改和破坏等,通信安全性是通信保护措施,要求在通信中采用保密安全性、传输安全性、辐射安全性等措施。
|
3月前
|
存储 运维 应用服务中间件
【实用经验分享】JumpServer部署教训:避免自信陷阱,谨慎行事
本文是关于使用JumpServer作为堡垒机进行服务器运维管理的经验分享。作者讲述了选择JumpServer的背景、从2.5.0版本升级到2.9.2版本的过程,以及在大厦断电后重新部署服务时遇到的挑战。文章详细描述了解决nginx和https配置问题的方法,并强调了在部署过程中保持谨慎、利用官方文档以及社区支持的重要性。最后,作者提到了数据迁移的问题,指出虽然旧数据无法直接融合到新版本中,但通过手动重新添加,能够顺利完成数据迁移。
112 2
【实用经验分享】JumpServer部署教训:避免自信陷阱,谨慎行事
|
3月前
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
267 2
|
SQL 安全 前端开发
Web安全性测试包括哪些要点?梳理下,总算搞明白了
Web安全性测试包括哪些要点?梳理下,总算搞明白了
422 0
Web安全性测试包括哪些要点?梳理下,总算搞明白了
|
存储 算法 安全
我用一个小小的开放设计题,干掉了40%的面试候选人
去年团队招聘需求比较大,本人参与了近百次的面试工作。今天来跟大家聊聊,面试候选人过程中,一个常见的开放类设计题目的解题思路,以及候选人的理解设计误区分析。
我用一个小小的开放设计题,干掉了40%的面试候选人
|
API
抱歉,Xposed真的可以为所欲为——1.基础知识储备(下)
本节简单介绍了什么是Xposed,基本原理,如何创建一个Xposed项目以及Xposed常用的类与方法。
741 0
|
存储 安全 IDE
Git 入门看这一篇就够了!程序员防被diss必会技能走一波
今天简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。 如果觉得不错的话,一定要点个关注哦 本文的结构如下: 作者和开发原由 Git 的数据模型 常用命令 资源推荐 作者和开发原由 Talk is cheap. Show me the code. 这句话就出自 Linux 和 Git 的作者Linus Torvalds。 原本 Linux 内核的版本控制系统是用的 BitKeeper,然而 2005 年,BitMover 公司不再让 Linux 开发团队免费使用了。。 Linus 一听,不给用了?老子自己写!
Git 入门看这一篇就够了!程序员防被diss必会技能走一波
|
数据库 Android开发

相关实验场景

更多