[置顶] 对于最新的Android病毒,Smack完全可以抵御
我写的有关Smack和Android系统结合的技术博客,希望有志之士可以参透其中奥妙,Smack作为Linux内核安全模块,已经可以移植到Android系统中,如果大家弄清我写的Smack安全策略,可以结合自己想法,将Smack继续和Android系统结合,将会发挥更好的访问控制效果。
为了实现模块化编程,libsmack库作为静态库或动态库装载,并为其它功能模块提供调用接口。libsmack库包含了smack开放给应用层的实用工具,其中较常用的是load_smack、setsmack和setsmackrule,它们分别表示装载smack虚拟文件系统、特权进程为自身设置安全标签和特权进程向/smack/load中写人smack规则。
1. 定义头文件和源文件
打开终端shell,输入指令“cd /android4.0/externalmkdir libsmack cd libsmack mkdir include mkdir src”,其中include为头文件所在目录,src为源文件所在目录。切换到include目录中,输入指令“mkdir smack cd smack vim smack.h”,定义以上三个函数,如下所示:
切换到src目录下,新建load_smack.c、setsmackrule.c和setsmack.c三个文件并将这些函数实现。load_smack函数使用mount函数来挂载smackfs,setsmackrule首先格式化参数,然后利用write函数向/smack/load写入一条smack规则,setsmack利用write函数向“/proc/self/attr/current”中写入进程安全标签。
2. 定义Android.mk文件
Android.mk文件是Android源码的编译文件,包含了编译规则,类似Linux的makefile文件,Android.mk书写是有规则可循的,在此不再阐述。在该文件中加入“include $(BUILD_STATIC_LIBRARY)”和“include $(BUILD_SHARED_LIBRARY)”将其编译成静态和动态链接库。