09 2011 档案
获得目录的file descriptor.
摘要:最近的模块中要用到 openat .其它原型为:(int dfd, const char __user *filename, int flags, int mode);第一个参数 是,dfd,找了许久都没找到怎样获得目录文件描述符,还是在google code search 中发现。int dirfd(DIR *dir);dirfd - get directory stream file descriptor.还是很怀念windows。MSDN组织的很好。 阅读全文
posted @ 2011-09-27 16:12 chingliuyu 阅读(206) 评论(0) 推荐(0)
Linux Security Module的注册层次
摘要:LinuxSecurityModule的注册层次===================================================作者:ietf AT doit.com.cn所有源文件来自于linux kernel 2.6.20请在GNU Library General Public License下参考。引用请注明出处。===================================================selinux的出现着实扰乱了文件系统的进度,不过送算慢慢搞清楚了其中的来龙去脉。下面将通过2.6.20内核中的security代码进行一番简单的分析。该 阅读全文
posted @ 2011-09-21 15:50 chingliuyu 阅读(779) 评论(0) 推荐(0)
Security-Enhanced Linux(SELinux)
摘要:http://space.doit.com.cn/45811/viewspace-2096.htmlSecurity-EnhancedLinux(SELinux),这在linux2.6的内核中,是你不得不关注的对象。无论是文件系统还是网络接口,到处都能不经意的瞥到它幽灵般的身影。其钩子的实现方式严重的影响着对内核的正常阅读,为此,很有必要把这个幽灵就出来使之大白于天下。本篇文章内容系东拼西凑,绝非原创,特此声明。一、什么是selinux美国国家安全局(NationalSecurityAgency,NSA)长时间以来就关注大部分操作系统中受限的安全能力。毕竟,他们的工作之一就是要确保美国国防部使 阅读全文
posted @ 2011-09-21 15:46 chingliuyu 阅读(661) 评论(0) 推荐(0)
使用kprobes,截获execve系统调用,更谨慎的hook syscallTable的写法
摘要:转载,原文出处:http://blog.chinaunix.net/u/548/showart.php?id=386423关于截获execve等系统调用,很久以来存在一个问题:新函数不能直接调旧函数,否则导致stack不平衡,出错。曾经有高人用一串的汇编代码去平衡堆栈, 但对于偶们这些汇编菜鸟来说, 连阅读都很困难。而且, 好像gcc4.x下不支持 它使用的一种寻址方式了。这次使用kprobes来直接找do_execve,直接照搬sys_execve的实现代码。至于LICENSE的问题,谁用谁负责,我只是从技术角度上说可以这样做。(我的代码是GPL的)只截获了open和execve作为示例,其 阅读全文
posted @ 2011-09-16 17:02 chingliuyu 阅读(729) 评论(0) 推荐(0)
什麼是 "asmlinkage"?--syscall原型说明
摘要:http://www.jollen.org/blog/2006/10/_asmlinkage.html什麼是 "asmlinkage"?jollen發表於 October 26, 2006 4:15 PM有網友來信問到,kernel 裡的 system call 實作函數中(C 函數),為什麼每一個函數原型宣告的前面都有一個 "asmlinkage" 的字串?例如:asmlinkagelong sys_nice(int increment)"asmlinkage" 是在 i386 system call 實作中相當重要的一個 gcc 阅读全文
posted @ 2011-09-16 16:53 chingliuyu 阅读(203) 评论(0) 推荐(0)
使用pthread 线程退出时自动释放资源
摘要:线程退出时自动释放资源今天碰到一个问题:主线程pthread_create一个子线程A,子线程pthread_mutex_lock,然后调用其他的函数fun,最后从fun返回后再pthread_mutex_unlock.但是如果在fun中调用了pthread_exit异常退出,那么岂不是没释放锁就退出了,这肯定会引起死锁.解决办法一:在fun中调用pthread_exit之前都先调用pthread_mutex_lock释放锁,但是这就需要吧mutex作为参数传给fun,如果fun再调用了其他函数,就得一层一层的把mutex传下去,而且要找到fun及其调用的函数中的pthread_exit然后再 阅读全文
posted @ 2011-09-16 16:42 chingliuyu 阅读(3285) 评论(0) 推荐(0)
linux内核中用d_path得到绝对路径名
摘要:http://blogold.chinaunix.net/u2/86590/showart_2185876.htmllinux内核中用d_path得到绝对路径名Linux 内核的d_path()函数转换目录数据结构(dentry结构)到ASCII路径名字,指定的目录数据结构(dentry结构)路径返回在一个缓冲区中,这个缓冲区得内核开发人员自己申请,自己释放。在linux2.4.18以前的内核中,指定的目录数据结构(dentry结构)路径返回在一段大小为PAGE_SIZE字节的固定缓冲区中。 这样就存在一个著名的d_path()路径截断漏洞,也就是如果提交的的目录数据结构(dentry结构)路 阅读全文
posted @ 2011-09-16 16:11 chingliuyu 阅读(3838) 评论(0) 推荐(0)
C语言循环的小艺术
摘要:http://blog.csdn.net/csdn_zc/article/details/67769291. 质数判断对于这个,很多人可能会直接这样写:view plainintisPrime(intn)//函数返回1表示是质数,返回0表示不是质数{inti;for(i=2;i<n;i++)if(n%i==0)break;returni>=n;}又或者,有的人知道平方根的优化:view plainintisPrime(intn){inti,s=(int)(sqrt((double)n)+0.01);for(i=2;i<=s;i++)if(n%i==0)break;return 阅读全文
posted @ 2011-09-16 09:52 chingliuyu 阅读(199) 评论(0) 推荐(0)
读LDD3,内存映射与DMA--PAGE_SHIFT,页帧号。
摘要:一,linux系统处理的地址类型1,用户虚拟地址:这是用户空间程序见到的常规地址。每个进程都有自己的虚拟地址空间2,物理地址物理地址用于处理器和系统内存之间3,总线地址总线地址在外围总线和内存这间使用4,内核逻辑地址内核逻辑地址组成了内核的常规地址空间。它一对一的映射部分或全部系统内存。在大多数架构中,内核逻辑地址与物理地址的不同,仅是它们之间存在一个固定的偏移。kmalloc 分配的就是逻辑地址,__get_free_pages?5,内核虚拟地址。它与内核逻辑地址的不同这处在于,内核虚拟地址不是一一对应到物理地址。内核虚拟地址空间是连续,但其映射的物理地址可以是离散的。内核逻辑地址是连续的, 阅读全文
posted @ 2011-09-09 09:44 chingliuyu 阅读(892) 评论(0) 推荐(0)
简明Vim练级攻略
摘要:简明Vim练级攻略2011-09-08 10:33|2586次阅读|来源:酷壳网【已有0条评论】发表评论关键词:Vim,练级攻略|作者:陈皓|收藏这篇资讯导读:本文来自《Learn Vim Progressively》,译文来自酷壳网陈皓整理编译的《简明Vim练级攻略》。这是一篇给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。文章内容如下:Vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM 阅读全文
posted @ 2011-09-09 09:07 chingliuyu 阅读(174) 评论(0) 推荐(0)
Linux Memory Mapping--mmap kernel 2.6
摘要:近几天有个项目需要实现用户层与内核共享内存。在前几篇博客中找到的均是kernel2.4 的。实现过程中,改的痛苦。对kernel源码才,勉强搞定。后来在此网站(http://www.scs.ch/~frey/linux/memorymap.html)发现原来有一个demo:#include <linux/config.h>#include <linux/version.h>#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h>#include < 阅读全文
posted @ 2011-09-08 16:21 chingliuyu 阅读(506) 评论(0) 推荐(0)
Avoid memory copying between user space and kernel space
摘要:http://www.linuxforums.org/forum/kernel/158548-avoid-memory-copying-between-user-space-kernel-space.html1. you allocate memory in the kernel device driver2. You write a "mmap" function in the device driver3. This mmap file_ops function will do a remap_pfn when invoked by the user-space app 阅读全文
posted @ 2011-09-01 23:45 chingliuyu 阅读(393) 评论(0) 推荐(0)
Kernel Space - User Space Interfaces_Mmap
摘要:http://people.ee.ethz.ch/~arkeller/linux/kernel_user_space_howto.html#s8#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/debugfs.h>#include <linux/mm.h> /* mmap related stuff */struct dentry *file1;struc 阅读全文
posted @ 2011-09-01 23:22 chingliuyu 阅读(464) 评论(0) 推荐(0)
利用mmap /dev/mem 读写Linux内存---root 权限
摘要:利用mmap /dev/mem 读写Linux内存分类: linux linux kernel2011-08-02 14:00 114人阅读 评论(1)收藏 举报使用 hexedit /dev/mem 可以显示所有物理内存中的信息。 运用mmap将/dev/mem map出来,然后直接对其读写可以实现用户空间的内核操作。以下是我写的一个sampleview plain#include<stdio.h>#include<unistd.h>#include<sys/mman.h>#include<sys/types.h>#include<sys 阅读全文
posted @ 2011-09-01 22:28 chingliuyu 阅读(1884) 评论(0) 推荐(0)