最近打算转向安卓平台的安全了,因为之前一直没有接触过安卓平台的安全,所以要从最底层的安全机制开始学起。一直以来都是在做Windows平台的安全的,对于Linux的了解不多,而安卓恰好又是基于linux平台的东西。所以搞安卓平台就很有必要去学习一下系统机制方面的东西了。最近看了一些资料, 对于安卓平台有了一个初步的理解,首先安卓给我的感受就是系统的层次很复制。我比较熟悉Windows的东西,Windows是基于子系统进行架构的,但是事实上子系统根本就只有一个win32,对于应用层来说很简明,就是系统提供Win32 API分发给ntdll.dll,而内核层面也只是简单的各种管理器机制。但是安卓则完全不同,安卓是一个基于虚拟机的系统。而且是多层级的架构。
根据我的理解,安卓是在linux内核的基础上扩展驱动程序以增加内核的功能,然后在应用层上使用Dalvik虚拟机以支持dex文件的指令执行。 关键就在于这里,对于Windows来说应用层就是应用层,就是直接暴露给用户和开发者的东西。 但是安卓不一样,安卓有虚拟机。对于Linux来说安卓的那些东西都应该是应用层的,但是用户是看不到的,安卓是把Linux的应用层分为运行时库、Dalvik虚拟机 、应用程序框架、和应用程序,安卓用户真正能看到的东西就只有应用程序了。 所以这是完全不一样的。
目前,我对于安卓的认识还是比较粗浅的,但是我觉得学习安卓要从内核模块学到应用程序框架。。这个跨度比较大。而且,对于一个功能来说,不仅仅是在内核层面而是可能在不同的层面上都暴露出接口,层层封装实现功能。
最后感觉的一点就是,学习的广度比较大,如果是学习Windows平台的底层安全,那么会C就可以通吃应用层和内核层,顶多要用点C++。但是Android就不一样了,首先ARM平台就是一个要接触的新东西,其次内核是C写的,应用是java写的,Dalvik虚拟机还有自己的汇编语法,各层次的东西感觉好复杂啊0.0
感觉要学习的东西还有好多啊0.0又是好多的不眠夜