你的位置:首页 > 软件开发 > 操作系统 > 如何穿越到android底层

如何穿越到android底层

发布时间:2015-11-15 10:00:25
对于android开发,实际上大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到问题是不至于束手无策。因此有必要了解底层的工作机制。由于android是开源的系统,因此学习其内部的工作机制是非常容易的,目前也有一 ...

对于android开发,实际上大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到问题是不至于束手无策。因此有必要了解底层的工作机制。

由于android是开源的系统,因此学习其内部的工作机制是非常容易的,目前也有一些关于android源码分析的书籍。

我一直认为,应用层的开发和底层没什么太大的关系,不过有一次因为应用权限的问题,也算是对android framework层有一些了解了,借助一本源代码分析的书籍了解android的工作原理并没有想象中那么困难。

与其他地方不同是本人使用了鲜为人知的代码注入技术(并非依赖注入),对于具有root权限的android设备,只需要往系统进程中注入一个.so文件,再用这个.so文件去获取jvm执行环境,就可以加载java代码,这样就将自己的java代码注入到系统进程中。

注入java代码以后就可以在framework层执行操作了,因此我们成功的从应用层穿越到android底层。

当然如果要在framework层执行自己编写的代码,直接替换系统文件也是可以的。一种方式是下载安卓源代码,构建编译环境,还有一种方式是对系统中的jar文件进行反编译在编译回去这也是可行的。参考(未测试):http://dss16694.iteye.com/blog/1436466

代码注入参考:http://blog.csdn.net/jiangwei0910410003/article/details/40949475

当然替换系统文件和代码注入都需要有root权限,最新的android默认启用了SELinux,获取root权限可能会遇到麻烦,因此最好是使用4.3以下的系统来研究。

android底层是基于linux的,系统开机后,首先运行的是linux,android的运行环境从app_process的可执行文件开始运行,由init.rc指定文件路径以及启动参数。app_process中启动了jvm,随后就进入了java的世界,java的程序都大部分都放在/system/framework文件夹下,与普通的jar包不同,这里的java是基于dalvik。反编译可以得到普通的jar文件,放在项目中可以作为lib使用,通过jar的函数调用系统的功能。

如果你想弹窗体出来玩玩可以参考这里。

原标题:如何穿越到android底层

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录