[http://www.csdn.net/article/2015-08-14/2825462](http://www.csdn.net/article/2015-08-14/2825462 "Android Hook神器:XPosed入门与登陆劫持演示")
Android Hook神器:XPosed入门与登陆劫持演示。出自百度高级Android工程师,周圣韬。Xposed是一款可以在不修改APK的情况下影响程序运行的框架服务,基于Xposed能够制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在本文中,作者详细介绍了Xposed的操作步骤以及登陆劫持实战演练。考虑到了手机安全方面的问题,演示了如何实现一个应用程序的登录劫持,并把帐号密码打印出来。
[http://blog.csdn.net/yzzst](http://blog.csdn.net/yzzst "周圣韬的csdn技术博客")
他最近的博客都是关于Android系统安全方面的问题,看来技术到了一定的程度需要考虑到安全方面的问题。
然后我查看了这篇博客 [http://blog.csdn.net/yzzst/article/details/45582315](http://blog.csdn.net/yzzst/article/details/45582315 "Android插件开发初探——基础篇 ")是有关于Android的插件化的讨论。我也觉得这个在以后的发展中是需要考虑到的。
插件化的优点:
- 主安装包较小
- 减少整体更新的次数
- 插件可单独静默更新
- 用户可以有所选择
- 强制模块化
- 降低耦合度
插件化的要求:
- 没有独立运行的入口
- 主应用控制、下载、安装、删除、静默升级、打开和关闭
- 主应用和插件资源共享
对比一个安装包的组成,我们要处理的东西也就很多:
- 主应用可以以Intent方式启动具体的插件,同时带入Map类型参数或者json串参数
- 使用相同的android:sharedUserId,资源数据共享
- 根据sharedUserId来查找插件
- queryIntentActivities查找符合这个action的所有activity(或其他)即插件
- query方式可以获得插件的路径以及实现接口类的类名
- 通过检索sharedUserId能够得到路径却无法获得到类名
- 通常可以使用一个描述文件(xml、json)描述插件结构
- createPackageContext()
- gerResourcesForApplication()
**知识补充**:Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户的,所以不同APK(用户)间互相访问数据默认是禁止的。
但是提供有两种APK(用户)共享数据的形式:
- 1.Share Preference/ Content Provider
APK可以指定接口和数据给任何其他APK读取,需要自己实现接口和Share的数据
- 2.Shared User id
android:sharedUderId在manifest文件中配置,通过Shared User id,并且都用相同的签名。拥有同一个User id的多个APK可以配置成运行在同一个进程中,所以默认就是可以相互访问任意数据,也可以配置成运行在不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。
**代理模式的学习**:
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
代理模式一般涉及到的角色有:
- 抽象角色:声明真实对象和代理对象的共同接口;
- 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真是对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
- 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
个人理解,代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活。因为代理类和被代理类都是继承同一个接口,所以代理类清楚的知道被代理类能干啥活。
Android Hook神器:XPosed入门与登陆劫持演示。出自百度高级Android工程师,周圣韬。Xposed是一款可以在不修改APK的情况下影响程序运行的框架服务,基于Xposed能够制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在本文中,作者详细介绍了Xposed的操作步骤以及登陆劫持实战演练。考虑到了手机安全方面的问题,演示了如何实现一个应用程序的登录劫持,并把帐号密码打印出来。
[http://blog.csdn.net/yzzst](http://blog.csdn.net/yzzst "周圣韬的csdn技术博客")
他最近的博客都是关于Android系统安全方面的问题,看来技术到了一定的程度需要考虑到安全方面的问题。
然后我查看了这篇博客 [http://blog.csdn.net/yzzst/article/details/45582315](http://blog.csdn.net/yzzst/article/details/45582315 "Android插件开发初探——基础篇 ")是有关于Android的插件化的讨论。我也觉得这个在以后的发展中是需要考虑到的。
插件化的优点:
- 主安装包较小
- 减少整体更新的次数
- 插件可单独静默更新
- 用户可以有所选择
- 强制模块化
- 降低耦合度
插件化的要求:
- 没有独立运行的入口
- 主应用控制、下载、安装、删除、静默升级、打开和关闭
- 主应用和插件资源共享
对比一个安装包的组成,我们要处理的东西也就很多:
- 主应用可以以Intent方式启动具体的插件,同时带入Map类型参数或者json串参数
- 使用相同的android:sharedUserId,资源数据共享
- 根据sharedUserId来查找插件
- queryIntentActivities查找符合这个action的所有activity(或其他)即插件
- query方式可以获得插件的路径以及实现接口类的类名
- 通过检索sharedUserId能够得到路径却无法获得到类名
- 通常可以使用一个描述文件(xml、json)描述插件结构
- createPackageContext()
- gerResourcesForApplication()
**知识补充**:Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户的,所以不同APK(用户)间互相访问数据默认是禁止的。
但是提供有两种APK(用户)共享数据的形式:
- 1.Share Preference/ Content Provider
APK可以指定接口和数据给任何其他APK读取,需要自己实现接口和Share的数据
- 2.Shared User id
android:sharedUderId在manifest文件中配置,通过Shared User id,并且都用相同的签名。拥有同一个User id的多个APK可以配置成运行在同一个进程中,所以默认就是可以相互访问任意数据,也可以配置成运行在不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。
**代理模式的学习**:
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
代理模式一般涉及到的角色有:
- 抽象角色:声明真实对象和代理对象的共同接口;
- 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真是对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
- 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
个人理解,代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活。因为代理类和被代理类都是继承同一个接口,所以代理类清楚的知道被代理类能干啥活。