2011年9月16日
摘要: 转载,原文出处: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 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 线程退出时自动释放资源今天碰到一个问题:主线程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 阅读(3273) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(3734) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(190) 评论(0) 推荐(0) 编辑