LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1632|回复: 7

谁说一下怎么用0x80编程

[复制链接]
发表于 2003-3-18 11:49:58 | 显示全部楼层 |阅读模式
?:eek:
发表于 2003-3-26 03:52:36 | 显示全部楼层
用 google 去 search 一下吧
发表于 2003-4-6 12:08:29 | 显示全部楼层
給你個Linux System Call Table網址,good luck!
http://quaff.port5.com/syscall_list.html
 楼主| 发表于 2003-4-7 15:39:15 | 显示全部楼层

谢谢,我先看看。。。。。

有问题再问
发表于 2003-4-17 10:02:29 | 显示全部楼层
是不是这个阿?

    前面介绍了系统调用相关的数据结构以及在Linux中使用一个系统调用的过程中每一步是怎样处理的,下面将把前面的所有概念串起来,说明怎样在Linux中增加一个系统调用。
这里实现的系统调用hello仅仅是在控制台上打印一条语句,没有任何功能。

1.修改linux/include/i386/unistd.h,在里面增加一条语句:

  
#define __NR_hello ???(这个数字可能因为核心版本不同而不同)
2.在某个合适的目录中(如:linux/kernel)增加一个hello.c,修改该目录下的Makefile(把相映的.o文件列入Makefile中就可以了)。
3.编写hello.c
. . . . . .

asmlinkage int sys_hello(char * str)

{

printk(“My syscall: hello, I know what you say to me: %s ! \n”, str);

return 0;

}

 
4.修改linux/arch/i386/kernel/entry.S,在里面增加一条语句:

ENTRY(sys_call_table)

. . . . . .

.long SYMBOL_NAME(sys_hello)

并且修改:

.rept NR_syscalls-??? /* ??? = ??? +1 */

.long SYMBOL_NAME(sys_ni_syscall)
5.在linux/include/i386/中增加hello.h,里面至少应包括这样几条语句:

#include <linux/unistd.h>
 

#ifdef __KERNEL

#else

inline _syscall1(int, hello, char *, str);

#endif

这样就可以使用系统调用hello了
 楼主| 发表于 2003-4-17 11:32:12 | 显示全部楼层

晕,楼上的那不是要重新编译内核了!

发表于 2003-4-17 21:05:49 | 显示全部楼层
给你个东西吧
去这个网站吧。英语不好的话,那我就*_*了
www.Phrack.org 有你想找的东西
自己用google搜索一下
 楼主| 发表于 2003-4-18 10:04:42 | 显示全部楼层

谢谢大家了!

问题我已解决,的确是我的内核不支持,我重新编译了内核,就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表