linux怎么导出内核中的文件?

linux怎么导出内核中的文件?,第1张

linux内核之模块参数及导出符号

1. 模块参数

用 “module_param (参数名,参数类型,参数读 / 写权限) ” 为模块定义一个参数,例如下列代码定义了 1 个整型参数和 1 个字符指针参数:

1 static char *book_name = "dissecting Linux Device Driver"

2 module_param(book_name, charp, S_IRUGO)

3 static int book_num = 4000

4 module_param(book_num, int, S_IRUGO)

在装载内核模块时,用户可以向模块传递参数,形式为 “insmode 模块名 参数名 = 参数值,如果不传递,参数将使用模块内定义的缺省值。参数类型可以是 byte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、 charp (字符指针)、 bool 或 invbool (布尔的反),在模块被编译时会将 module_param 中声明的类型与变量定义的类型进行比较,判断是否一致。模块被加载后,在 /sys/module/ 目录下将出现以此模块名命名的目录。在此模块的目录下还将出现 parameters 目录,其中包含一系列以参数名命名的文件节点,这些文件的权限值就是传入module_param ()的 “参数读 / 写权限” ,而文件的内容为参数的值。

insmod命令加载模块后,通过查看 “/var/log/messages” 日志文件可以看到内核的输出:

# tail -n 2 /var/log/messages

tail -n 2表示输入文件的最后2行

2. 导出符号

Linux 的 “/proc/kallsyms” 文件对应着内核符号表,它记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表中:

EXPORT_SYMBOL( 符号名 )

EXPORT_SYMBOL_GPL( 符号名 )

导出的符号可以被其他模块使用,只需使用前声明一下即可。 EXPORT_SYMBOL_GPL ()只适用于包含 GPL许可权的模块。

如果符号名是“e_symbol”,从 “/proc/kallsyms” 文件中找出 e_symbol 的相关信息:

# grep e_symbol /proc/kallsyms

8000af1c t e_symbol [export_symb]

师(PartitionMagicV8.05h)分出一个10G左右空间、留着给opensuse使用,这一步我试图把我的最后一个盘符(F)重新分区,结果失败了,所以,我干脆把这个盘格式化了。

2、把iso提取(解压)到一个fat32分区下面,建议用UltraISO,比如说提取到e:/suse文件夹下,记得一定是fat32,如果原有的分区都是ntfs的,可以采用分区魔术师重新格式化某个分区,在格式化时选择“fat32”。

3、在suse文件夹下有个openSUSE10_3_LOCAL.exe文件,点击安装后,重新启动电脑,就会在windows引导菜单上看到安装suse的菜单了,点击该菜单,就会进行安装了。

4、安装过程中有一步很重要,需要选择suse文件夹所在目录,一定要选对分区(可以根据分区的大小来判断,然后输入/SUSE(在windows下的e盘下,虽然是小写,这里一定要大写)。剩下的就和光驱安装一样了,网上有很多教程,我就不详细说了。

注意:安装过程需要分区,分区时,如果要保留windows的分区,要选择“更改”——“分区”——“专家”模式,然后既可以使用原来的分区,也可以进行重新分区,比如说,我原来的F盘本来就是空的,那么我可以选择先把该分区删除,然后再添加,可以自己配置大小,一般需要三个新的分区,第一个“swap,装载点/swap”,第二个“ext3,装入点/boot”,第三个“ext3,装入点/”就可以。

Attansic L2 驱动问题

我第一次安装完成后,发现网卡显示(未连接),以为自己没有安装好,就重新安装了,这一次在安装的过程中特意注意了一下网络配置,结果发现在安装系统时,进行到网络配置这一步时,网卡的信息依旧是(未连接),更谈不上编辑了,还是先跳过吧。

到网上查找相关资料,发现问这类问题的帖子倒是有一些,就是没有太具体的答案,不过还是有了一些思路,好像是网卡驱动没装好,所以根本就没有识别网卡,顺便说一句,我的电脑是华硕P5G-MX主板,Attansic L2集成网卡。

到网上进行查找,找到了网卡的linux驱动,下载后,看说明(一个readme文件,全是英文,其实就是把该文件解压,放到home/username文件夹下就行),由于本人是linux菜鸟,所以真是费了一番周折的,最后驱动放在了“home/用户名”文件夹下,进入src目录,在make时,报错了,“kernel source not found”。

继续查找,原来是要安装linux内核源码,通过“uname -r”命令,查看到我的系统内核是2.6.22.5-31版本的,所以到网上下载了该版本的源码,rpm格式的,kernel-source-2.6.22.17-0.1.src.rpm,还有linux-2.6.22.5.tar.gz这种格式的,我不会装,rpm格式的很好装,在opensuse中,直接点击,然后在点击“Yast安装”就可以了。这回又重新回到了驱动所在的src文件夹下,再次运行make命令,唉,这次显示的是另外的错误“linux kernel surce not configured -missing config.h”。

继续查找,可能我下载的驱动版本不对,于是按照帖子中说的重新下载了网卡驱动,再次make,多么希望能成功呀,可是再次提示错误“Compiler not found 停止”。

原来没装编译器,到网上下载gcc编译器,ftp://mirror.switch.ch/mirror/scientificlinux/40rolling/i386/SL/RPMS/gcc-3.4.6-9.i386.rpm,安装,再次make,还是有错误“‘struct vlan_group’ has no member named ‘vlan_devices’“,”at_main.c 1488“等等之类的。

解决办法是:打开at_main.c文件,两个调试函数at_vlan_rx_kill_vid at_restore_vlan 去掉函数的实现部分,直接return,这回在make,make install,成功了,高兴呀!

重新启动电脑,发现网卡真的识别了,好几天才成功的。

发布版本:Red Hat Enterprise Linux Server release 6.6 (Santiago)

内核版本:Linux 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

提取漏洞:CVE-2016-5195 Dirty COW

提权脚本:Marion001.c

编译命令:gcc -pthread Marion001.c -o Marion001 -lcrypt.

参考连接: https://github.com/dirtycow/dirtycow.github.io/blob/master/pokemon.c

参考视频: https://www.youtube.com/watch?v=uYVGvYeh5vo

攻击步骤:编译运行后会让攻击者输入新密码,此时可能需要另一个shell cat /etc/passwd 或者su marion00,原始passwd文件会被备份到/tmp/passwd.bak,攻击者只需切换到marion00账户即可root


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7135334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存