我写的有关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)”将其编译成静态和动态链接库。

最新文章

  1. chkconfig
  2. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)
  3. jQuery省市区三级联动插件
  4. Android开源代码分享
  5. Eclipse 启动Tomcat 超时报错的解决方案
  6. uva1637Double Patience
  7. MAC 下cocos2d-x lua 使用dragonbones的方法
  8. CSS实现倒影-------Day80
  9. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法
  10. [BZOJ3038]上帝造题的七分钟2 树状数组+并查集
  11. MySQL官网示例数据库emploees分析使用
  12. python学习day8 文件操作(深度学习)
  13. Eclipse下关于The serializable class UsersServlet does not declare a static final serialVersionUID field of type的警告
  14. Linux-切换启动方式
  15. burp抓取手机包
  16. 简明python教程 --C++程序员的视角(五):面向对象的编程
  17. MAC系统XAMPP 中 MySQL命令行client配置使用
  18. spring MVC之构造ModelAndView对象
  19. centos6 pip install python-ldap报错
  20. QuantLib 金融计算——基本组件之 Date 类

热门文章

  1. 深入理解BFC和Margin Collapse
  2. spring aop切面配置
  3. 富文本编辑器CKEDITOR的使用配置(问题注解)
  4. Wcf序列化的循环引用问题1
  5. iOS判断当前控制器是否正在显示
  6. JavaScript 之 使用 XMLHttpRequest 上传文件
  7. Hive笔记--sql语法详解及JavaAPI
  8. 在网上看到一个关于APP的测试
  9. oldboy第四天学习
  10. [转]用Objective-C实现简单的数学字符串公式的计算