2.6内核模块无法insmod

amazonking 2006-02-23 08:02:17
写的模块,编译的时候几个东西是unknown,undefined:
__fixunsdfsi
__floatsidf
__kernel_sigreturn
前面两个,网上有人说是内核不能有浮点数(1e6要改成(long)1e6),可是我的模块没有浮点数操作阿,也不知道怎么改。
最后一个我在程序中为了得到sigreturn的地址,用了extern void __user __kernel_sigreturn,
unsigned long sigret_addr = &__kernel_sigreturn,也不懂怎么回事。

又有说是有以来的模块,可用depmod -a *.ko也没有/lib/modules/version/modules.dep出现,modprobe也没用了,不知道怎么。
...全文
136 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tb01412 2006-02-24
  • 打赏
  • 举报
回复
试一下用头文件的方式来引用__kernel_sigreturn
amazonking 2006-02-24
  • 打赏
  • 举报
回复
哪个头文件?只搜索到signal.c里有extern void __user __kernel_sigreturn,
vsyscall-sigreturn.S里有.globl __kernel_sigreturn
.type __kernel_sigreturn,@function
我该怎么包含头文件?
第一部分 基础知识
1.1 什么是LKMs
1.2 什么是系统调用
1.3 什么是内核符号表(Kernel-Symbol-Table)
1.4 如何实现从用户空间到内核空间的转换
1.5 使用用户空间函数的方法
1.6 常用内核空间函数列表
1.7 什么是内核守护进程
1.8 创建你自己的设备

第二部分 渐入佳境
2.1 如何截获系统调用
2.2 一些有趣的系统调用
2.2.1 发现有趣的系统调用(strace方法)
2.3 迷惑内核的系统表
2.4 和文件系统有关的攻击
2.4.1 如何隐藏文件
2.4.2 如何隐藏文件的内容(完全的)
2.4.3 如何隐藏文件的某一部分(一个实现原型)
2.4.4 如何重新定向或者监视文件操作
2.4.5 如何避免任何文件权限问题
2.4.6 如何使的一个有入侵工具的目录不可存取
2.4.7 如何改变CHROOT环境
2.5 和进程有关的入侵
2.5.1 如何隐藏任何进程
2.5.2 如果改变文件的执行结果
2.6 和网络(Socket)有关的入侵
2.6.1 如果控制Socket操作
2.7 TTY纪录的方法
2.8 用LKMs写病毒
2.8.1 如何让LKM病毒感染任何文件(不仅仅是模块)
2.8.2 如何让LKM病毒帮助我们进入系统
2.9 使我们的LKM不可见,而且不可卸载
2.10 其他的入侵kerneld进程的方法
2.11 如何检查当前的我们的LKM

第三部分 解决方案(给系统管理员)
3.1 LKM检测的理论和想法
3.1.1 一个使用的检测器的原形
3.1.2 一个密码保护的create_module(...)的例子
3.2 防止LKM传染者的方法
3.3 使你的程序不可以被跟踪(理论)
3.3.1 一个反跟踪的实用例子
3.4 使用LKMs来防护你的linux内核
3.4.1 为什么我们必须允许任何一个程序都拥有可执行的权限
3.4.2 链接的补丁
3.4.3 /proc权限的补丁
3.4.4 安全级别的补丁
3.4.5 底层磁盘补丁

第四部分 一些更好的想法(给hacker的)
4.1 击败系统管理员的LKM的方法
4.2 修补整个内核-或者创建Hacker-OS
4.2.1 如何在/dev/kmem中找到内核符号表
4.2.2 新的不需要内核支持的'insmod'
4.3 最后的话

第五部分 最近的一些东西:2.2.x版本的内核
5.1 对于LKM作者来说,一些主要的不同点

第六部分 最后的话
6.1 LKM传奇以及如何使得一个系统即好用又安全
6.2 一些资源链接
Linux设备驱动程序学习(0)-Hello, world!模块 Linux设备驱动程序学习(0) -Hello, world!模块 一个学习Linux设备驱动程序都会碰到的第一个例程: #include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, Tekkaman Ninja !\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, Tekkaman Ninja !\n Love Linux !Love ARM ! Love KeKe !\n"); } module_init(hello_init); module_exit(hello_exit); 我将其复制到我的工作目录,并编写了一个简单的Makefile文件: KERNELDIR = /home/tekkaman/working/SBC2440/linux-2.6.22.2 # The current directory is passed to sub-makes as argument PWD := $(shell pwd) INSTALLDIR = /home/tekkaman/working/rootfs/lib/modules CROSS_COMPILE =/home/tekkaman/working/crosstool-gcc410-k26222/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu- CC = $(CROSS_COMPILE)gcc obj-m := hello.o modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules modules_install: cp hello.ko $(INSTALLDIR) clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions .PHONY: modules modules_install clean 说实话,以上是我参考了《Linux设备驱动程序(第3版)》的Makefile源码修改得来的。我对Makefile不是很了解,是该好好学习学习了! 然后就是make modules 、 make modules_install 。 [root@Tekkaman-Ninja Helloworld]# make modules make -C /home/tekkaman/working/SBC2440/linux-2.6.22.2 M=/home/tekkaman/working/Linuxdriver/Helloworld modules make[1]: Entering directory `/home/tekkaman/working/SBC2440/linux-2.6.22.2' CC [M] /home/tekkaman/working/Linuxdriver/Helloworld/hello.o Building modules, stage 2. MODPOST 1 modules CC /home/tekkaman/working/Linuxdriver/Helloworld/hello.mod.o LD [M] /home/tekkaman/working/Linuxdriver/Helloworld/hello.ko make[1]: Leaving directory `/home/tekkaman/working/SBC2440/linux-2.6.22.2' [root@Tekkaman-Ninja Helloworld]# make modules_install cp hello.ko /home/tekkaman/working/rootfs/lib/modules [root@Tekkaman-Ninja Helloworld]# 在我的开发板上的操作: [Tekkaman2440@SBC2440V4]#cd /lib/modules/ [Tekkaman2440@SBC2440V4]#ls cs89x0.ko hello.

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧