menu gh0st
系统调用之修改主机名(arm架构)
289 浏览 | 2021-04-27 | 阅读时间: 约 1 分钟 | 分类: 学校课程 | 标签: 操作系统
请注意,本文编写于 222 天前,最后修改于 222 天前,其中某些信息可能已经过时。

系统调用之修改主机名(arm架构)

第一步头文件中声明系统调用函数

include/linux/syscalls.h #在这个目录添加头文件

第二步把系统调用函数加入到syscall数组中

include/uapi/asm-generic/unistd.h #在这个目录下操作

添加内容如下(我们的_NR_choosename需要改为294,后面__NR_syscalls那个就改成295,如果直接在后面加改成295则会发生下面的报错,越界)

第三步添加函数体

kernel/sys.c #在这个目录下添加函数体

具体添加内容(其实就是这里的sethostname函数体把第一个权限if判断删了就行,所以可以复制粘贴)

第四步正常编译内核

具体就不说了

第五步写c文件调用

#define _GUN_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <stdio.h>

int main(){
    syscall(294,"hello",5);
    return 0;
}

编译后执行,在使用hostname查看主机名可以看到主机名改成hello。

下面是将choosename封装后的文件:

如果是x86架构,参考这个博客,两者差别不大,主要是arm架构多了第二步。

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!