首页
社区
课程
招聘
[原创]基于Xposed开发应用的基本规则
发表于: 2015-4-26 15:52 28312

[原创]基于Xposed开发应用的基本规则

2015-4-26 15:52
28312
首先感谢Rovo89给我们的提供的这一套方便的框架-Xposed,它能满足你的很多需求,你想实现在Android程序运行时动态获取虚拟机的信息吗,你想实现你的手机界面的导航条突然换肤吗,你想实现偷偷查看你女朋友的短信吗?哈哈,这些都能实现哦,很神奇,因为它有特级,Duang!Duang!Duang!!!好了,废话不多说了,让我们进入正题吧。
    首先你得在你的真机或模拟器上安装Xposed这个框架,前提是你的真机或模拟器时root后的,因为Xposed框架需要这方面的权限,安装完成后,你reboot你的机器,然后打开Xposed程序,你可以看到如下所示:
   
    然后点击框架,如下图所示,按照所提示的安装,并授权,授权后,会出现如下所示:
   
   

   Xposed安装成功,下面就可以基于Xposed开始写程序了,基于Xposed来开发的Android程序有平台限制,必须要满足在Android4.0.3平台以上(包括Android4.0.3),
下面我们开始新建一个Android程序,新建完了过后,就开始和Xposed进行关联了,主要分为以下几步:
   1.修改AndroidManifest.xml文件
   
   主要在文件中的application节点下加入下面三个元数据标签,
   xposedmodule代表的是Android程序作为Xposed中的一个模块,所以值为true;
   xposeddescription代表的是对本模块的功能的描述,可以自己简单叙述下就可以了;
   xposedminversion代表的是本模块开发时用到的xposed的jar包的最低版本号,这里是40,而我所用的xposed的jar包版本是54,如下图所示:
   
  2.新建一个类,并在其中实现最简单的功能,如下所示:

我在这里新建了一个类
de.robv.android.xposed.mods.tutorial,然后实现了Xposed jar包中的一个类的方法handleLoadPackage,只要实现了这个,就可以通过它来完成
你好多想做的事情,这里我所做的是记录日志,日志内容是“每次运行起来的apk程序的包名”

3.指定这个模块运行的入口,
在你的assets目录下新建一个文件,如图所示:

然后在这个文件中写上模块运行的入口,这里可以写:


最后就可以运行的项目了,运行过后会在手机上产生你的项目图标,
如下图所示:


然后再打开你的Xposed程序,将模块加入其中,点击模块界面,如下所示:


将你的模块勾选上,然后重启手机,然后你就可以看到如下的logcat信息:


大功告成!你的模块已经能监控所有的运行的应用程序,你能得到他们的包名,当然这是根本不够满足你的求知欲的,下面的路靠自己摸索啦!后面会详细地分析Xposed的原理过程,敬请关注!!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
就等这个呢,希望多些这类文章!
2015-4-26 18:09
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
都是6plus
2015-4-26 22:08
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
4
贴个前段时间基于xposed写的微信gps地址修改app,带地图选择的,用的是baidu地图。
https://github.com/qdk0901/FakeXX.git
2015-4-26 22:19
0
雪    币: 47
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
一起努力啊
2015-4-27 00:55
0
雪    币: 4554
活跃值: (2186)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
不错 来个系列可好
2015-4-27 10:11
0
雪    币: 335
活跃值: (313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
话说xposed开发插件,如何有源码动态调试。。。 尝试过,不成功...
2015-4-27 10:54
0
雪    币: 31
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我按照你的说明,建了一个空工程,但是在xposed installer 的日志中出现以下错误:
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

这是神码情况呢 ?
2015-4-29 08:49
0
雪    币: 47
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
你的Xposed首先有没有保证安装成功了,手机root了吗,是4.0.2以上的吗
2015-5-14 16:38
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你好 !请问这样修改分辨率没有成功是什么原因呢?       

XposedHelpers.findField(DisplayMetrics.class, "widthPixels").set(null,  Integer.valueOf(result[1]));
2015-6-15 22:30
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我的那个找不到我写的模块,,,,,这是因为什么啊
2015-7-1 16:41
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
请问你后来解决了吗,我也遇到了同样的问题
2015-7-1 18:52
0
雪    币: 26
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
原因是要让Xposed.jar 包不参与编译,你新建一个叫lib的目录然后把包copy到里面,然后再Build Path 这样就不参与编译了
2015-7-15 20:30
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
请教一个实例问题:
模块编写目的是对一个第三方应用的XXX函数进行勾取
findAndHookMethod(“包名+类名”, lpparam.classLoader, “XXX”, 第一个参数类型, 第二个参数类型, new XC_MethodHook(){});
第一个参数类型是该应用的自定义类型,我尝试用反射机制Class.forName("类型名")来写,结果”class not found“,这种情况应该怎么办呢?
2015-7-16 15:04
0
雪    币: 85
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
强大的xposed
2016-4-26 16:33
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Xposed Library应该是复制到lib目录(注意是lib目录,不是Android提供的libs目录),然后将这个jar包添加到Build PATH中,这种bug就不会出现了
2016-6-17 10:23
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
给你们一个我以前看到的超级棒的文章http://blog.csdn.net/beyond296089727/article/details/45766297 好详细哦,以前我就跟着他弄得
2016-6-17 11:11
0
游客
登录 | 注册 方可回帖
返回
//