08 2011 档案
linux内核中读写文件
摘要:#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/string.h>#include <linux/mm.h>#include <linux/syscalls.h>#include <asm/unistd.h>#include <asm/uaccess.h>#define MY_FILE "/root/LogF 阅读全文
posted @ 2011-08-30 23:29 chingliuyu 阅读(634) 评论(0) 推荐(0)
Linux内核中读写文件数据的方法
摘要:Linux内核中读写文件数据的方法有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read()vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。下面介绍主要步骤:1. 打开文件filp_open()在kernel中可以打开文件,其原形如下:strcut file* filp_open(const char* filename, 阅读全文
posted @ 2011-08-30 23:17 chingliuyu 阅读(1165) 评论(0) 推荐(0)
linux驱动current,引用当前进程,及task_struct
摘要:尽管内核模块不象应用程序一样顺序执行, 内核做的大部分动作是代表一个特定进程的. 内核代码可以引用当前进程, 通过存取全局项 current, 它在 <asm/current.h> 中定义, 它产生一个指针指向结构 task_struct, 在 <linux/sched.h> 定义. current 指针指向当前在运行的进程. 在一个系统调用执行期间, 例如 open 或者 read, 当前进程是发出调用的进程. 内核代码可以通过使用 current 来使用进程特定的信息, 如果它需要这样.实际上, current 不真正地是一个全局变量. 支持 SMP 系统的需要强迫 阅读全文
posted @ 2011-08-29 13:38 chingliuyu 阅读(1223) 评论(0) 推荐(0)
控制寄存器 cr0,cr2,cr3
摘要:《Linux内核完全剖析—基于0.12内核》第4章80x86保护模式及其编程控制寄存器(CR0~CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性,如图4-3所示。CR0中含有控制处理器操作模式和状态的系统控制标志;CR1保留不用;CR2含有导致页错误的线性地址;CR3中含有页目录表物理内存基地址,因此该寄存器也被称为页目录基地址寄存器PDBR(Page-Directory Base address Register)。(点击查看大图)图4-3 控制寄存器CR0~CR31.CR0中协处理器控制位CR0的4个位:扩展类型位ET、任务切换位TS、仿真位EM和数学存在位MP用于控制80x8 阅读全文
posted @ 2011-08-28 14:25 chingliuyu 阅读(2816) 评论(0) 推荐(0)
GCC的内嵌汇编语法 AT&T汇编语言语法
摘要:__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法(一)2007年05月09日 12:36开 发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限 制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇编语言,即使你有可 能并不喜欢它。如果你是计算机专业的话,在大学里你应该学习过Intel格式的8086/80386汇编,这里就不再讨论。如果我们选择的OS开发工具是GCC以及GAS的话,就必须了 阅读全文
posted @ 2011-08-28 14:14 chingliuyu 阅读(1006) 评论(0) 推荐(0)
hook syscall table and clear cr0
摘要:一个简单的linux rootkit2011-01-17 14:58http://hi.baidu.com/shazi129/blog/item/53974aec2f0fc5c32e2e21f1.html下面提供一个相对完整的rootkit,在Fedora 12上编译运行成功。#include <linux/module.h>#include <linux/kernel.h>#include <asm/unistd.h>MODULE_LICENSE("GPL");// addr of sys_call_talbe = 0xc077e3a8 阅读全文
posted @ 2011-08-26 23:34 chingliuyu 阅读(525) 评论(0) 推荐(0)
get system call table in x86-64 Linux
摘要:http://bbs.chinaunix.net/thread-2143235-1-1.htmlLinux System Call Tablehttp://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <asm/uaccess.h>#include <asm/fcntl.h>#include <asm/unist 阅读全文
posted @ 2011-08-26 16:56 chingliuyu 阅读(905) 评论(0) 推荐(0)
LVM分区挂载。
摘要:如果安装系统时候用到了LVG(逻辑卷管理),那么LVM分区不能够通过普通挂载方式来挂载。普通的挂载方式下我们可以指定分区格式,然后挂载:#mount -t ext3 /dev/hdb1 /mnt/hdb1对LVM分区进行挂载,前提要能够被探测到,然后激活,再挂载。1.探测VolGroup#vgscan2.激活# vgchange -a y VolGroup003.挂载#mount /dev/VolGroup00/LogVol01 /mnt/hdb2 阅读全文
posted @ 2011-08-26 14:58 chingliuyu 阅读(394) 评论(0) 推荐(0)
linux 2.6.22-14 动态添加syscall - [Linux]
摘要:linux 2.6.22-14 动态添加syscall- [Linux]版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://technica.blogbus.com/logs/18945123.htmlLinux System Call Tablehttp://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html 这两天在做系统软件大作业,写一个kernel module,添加自己的syscall,实现通过访问内核全局数据获得关于所有进程和CPU等信息。作业本身不难,但是被kernel的各个版本搞死了,书上网上很多东西 阅读全文
posted @ 2011-08-26 13:48 chingliuyu 阅读(999) 评论(0) 推荐(0)
C++ explicit关键字应用方法详解
摘要:explicit作用:在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项: * explicit 关键字只能用于类内部的构造函数声明上。 * explicit 关键字作用于单个参数的构造函数。 * 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换转载:http://developer.51cto.com/art/201002/183398.htmC++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用。我们今天为大 阅读全文
posted @ 2011-08-24 09:51 chingliuyu 阅读(212) 评论(0) 推荐(0)
判断PE文件的数字签名信息
摘要:判断PE文件的数字签名信息工作中碰到需要判断一个PE文件是否是所确认的文件,而不是被替换过的。直接判断文件名的话有些不保险,别人只要修改下文件名,就可以以假乱真。因而需要判断额外的信息;由于文件有数字签名,判断数字签名因而是一个比较好的方法,但是如果只是判断数字签名是否有效也不够,别人只要用自己的证书重新签名就可以了,所以需要判断证书签名者信息。验证文件数字签名是否有效可以使用函数 WinVerifyTrust取得文件数字签名证书信息需要使用函数 CryptQueryObject。下面是一段从网上搜到的获得文件数字签名证书信息的代码:1 #include <windows.h>2 阅读全文
posted @ 2011-08-21 23:18 chingliuyu 阅读(659) 评论(0) 推荐(0)
strace gdb与ptrace
摘要:strace gdb与ptrace2011-05-24 10:20121人阅读评论(0)收藏举报学习, 转贴自:http://blog.csdn.net/Javadino/archive/2008/09/06/2891413.aspxhttp://blog.csdn.net/Javadino/archive/2008/09/06/2891434.aspx引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录 阅读全文
posted @ 2011-08-18 22:59 chingliuyu 阅读(729) 评论(0) 推荐(0)
字符集和字符编码[订正]
摘要:字符集和字符编码[订正]这个主题已经被N多人讨论过了,这里仅仅是个人总结,不是教程。字符集和字符编码潘孙友 2010-12-31 于遵义目录 一、字符集 二、字符编码 三、Windows平台 3.1 Codepage代码页 3.2 编码转换(API) 3.3 编码转换(CRT) [感谢@loop指出错误] 四、Linux/unix平台 4.1 iconv 4.2 ICU 一、字符集字符集是一个集合,描述并定义了这个集合中可以出现哪些字符,常见的字符有GB2312、GBK、GB18030、UNICODE等。字符集仅仅是一种规范,一种约定,我们也可以定义自己的字符集。举例来说,... 阅读全文
posted @ 2011-08-06 13:30 chingliuyu 阅读(366) 评论(0) 推荐(0)
结合file和iconv命令转换文件的字符编码类型
摘要:http://hi.baidu.com/netwrom/blog/item/8885f31ef0d09ae7e1fe0b1c.html在很多类unix平台上都有一个iconv工具,可以用来转换字符编码;而对于普通的文本文件,file命令可以用来检测某个文件的字符编码类型,结合两者就可以非常方便地把一个未知编码类型的文本文件用某一指定编码类型进行编码。 例如,linux内核源代码的某些文件编码就不是用ASCII编码的(貌似跟有些hacker“怪样”的姓名有关),例如:$ cd /path/to/linux-2.6.17$ file kernel/sys.ckernel/sys.c: ISO-8. 阅读全文
posted @ 2011-08-04 17:22 chingliuyu 阅读(2297) 评论(0) 推荐(0)