![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kernel
think_ycx
这个作者很懒,什么都没留下…
展开
-
【Error】make LKM时 找不到符号
报错:# make报错WARNING: "xxx" [/xxx.ko] undefined!WARNING: "xxx" [/xxx.ko] undefined!WARNING: "xxx" [/xxx.ko] undefined!# dmesg信息[34045.939994] lkm: Unknown symbol xxx (err 0)[34045.940072] lkm: Unknown symbol xxx (err 0)[34045.941556] lkm: Unknown原创 2020-09-15 14:57:19 · 214 阅读 · 0 评论 -
【Kernel】pid 与 tgid
总结:getpid()实际上返回的时 kernel task_struct中的tgid。一个进程 中 有多个线程,这些线程的pid都是一致的,都对应内核态的tgid。thread group id。但是这些线程在内核态的task_struct中的pid不一致。参考1:https://my.oschina.net/u/3258476/blog/1518920 在Linux操作系统层面,线程其实只是特殊的进程,最特殊之处在于跟其他“线程进程“共享内存(包括代码段、数据段等,但..原创 2020-09-15 11:12:54 · 996 阅读 · 0 评论 -
【Kernel】内核热补丁技术揭秘
https://ruby-china.org/topics/20680下述为UCloud资深工程师邱模炯在InfoQ架构师峰会上的演讲——《UCloud云平台的内核实践》中非常受关注的内核热补丁技术的一部分。给大家揭开了UCloud云平台内核技术的神秘面纱。如何零代价修复海量服务器的Linux内核缺陷?对于一个拥有成千上万台服务器的公司,Linux内核缺陷导致的死机屡见不鲜。让工程师们纠结的是,到底要不要通过给服务器升级内核来修复缺陷?升级意味者服务器重启、业务中断以及繁重的准备工作;不升级则担转载 2020-09-10 14:32:02 · 1404 阅读 · 0 评论 -
【LKM】整合多个LKM为1个
假设原来编写了两个LKm: 1.c 和2.c ,各自make insmod/rmmod是没问题的。但是如果你需要在1.c中调用2.c的函数,那就麻烦了。折腾了一个小时才搞定。1、首先编写2.h,把你需要的函数 申明在头文件中。删掉2.c中的 module_init 和 module_exit。2、在1.c中 #include "2.h", 调用函数。3、编写Makefile,参考如下:obj-m += 3.o3-objs := 1.o 2.occflags-y := -st.原创 2020-09-09 17:21:30 · 188 阅读 · 0 评论 -
【Kernel】如何从kernel中获取cred结构体中的value
获取linux kernel cred结构体中成员变量的value时,根绝kernel版本需要做适配。linux kernel 3.5以上,获取cred需要如下处理(重点 cred->uid.val): #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) printk(KERN_INFO "PROCESS cred info: uid %u ",原创 2020-09-09 16:19:07 · 738 阅读 · 0 评论 -
【转载Kernel】Kernel Threads Continued
原文:https://sysplay.in/blog/tag/kernel-threads/Kernel Threads Continued13 Replies<< Previous ArticleIn theprevious article, we learned the basics of kernel threads such as creating the thread, running the thread and so on. In this article, we.转载 2020-09-07 15:41:22 · 160 阅读 · 0 评论 -
【LKM】makefile的支持c99的方法: ccflags-y := -std=c99
如果写的LKM中 变量的定义在 函数之后,则会warning:warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]正常在gcc中添加-std=c99即可。例如:gcc -std=c99 1.c -o 1如果是在Makefile中,添加这一行:ccflags-y := -std=gnu99 -Wno-declaration-after-statement# ccflag.原创 2020-09-01 21:35:27 · 8481 阅读 · 1 评论 -
【LKM】make 错误:make -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/xxx
错误日志:$ makemake -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/xxxx/3-netlink modulesmake[1]: Entering directory '/usr/src/linux-headers-4.15.0-58-generic'Makefile:986: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel原创 2020-09-01 21:32:32 · 1760 阅读 · 0 评论 -
【转载】内核中申请内存的函数
Linux内核空间中常见的内存分配函数1void *kmalloc(size_t size,gfp_t flags)kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。较常用的flags()有:GFP_ATOMIC —— 分配内存的过程是一个原子过程,分配内存的过程不会被(高优先级进程或中断)打断; GFP_KERNEL —— 正常分配内存;...转载 2020-08-27 16:24:44 · 415 阅读 · 0 评论 -
【Linux Kernel】源码阅读时的:KERNEL_VERSION 和 LINUX_VERSION_CODE
问题在看源码时会遇到如下代码:#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 0, 9) xxxx#else xxxx#endif但是这个LINUX_VERSION_CODE找不到是在哪里定义的。搜索之后发现,LINUX_VERSION_CODE和KERNEL_VERSION这个宏定义,都是在linux源码 include/linux/version.h文件中的。但是下载linux kernel 源码中么有这个文件原创 2020-08-27 15:12:33 · 2118 阅读 · 0 评论 -
记一次编译linux 2.6 和4.10内核源码
0x00前言很早就想开始学习linux内核漏洞的利用,之前的调试方式是借助kgdb来在两个vmware中调试,实际操作起来是没问题的。然而最近看到很多文章是使用qemu+gdb来调试的,因此决定尝试一下这种调试方式,第一步就是编译linux源码,本文将简述一下编译linux2.6源码和4.10源码时遇到的坑。0x01 编译linux2.6源码编译linux2.6的源码的过程参考这里:h...原创 2018-06-22 23:48:23 · 3595 阅读 · 0 评论 -
CFI in Android Kernel Security ppt略读 - 来自Linux Security Summit USA2018
目录一、Android内核漏洞概览访问控制seccomp sandboxing不需要权限在userland就可以被触发的bug不从userland也可以被触发的bug内存安全对所有的内核漏洞进行分类二、CFI(Control Flow Integrity)记录一下早上(20180828)看的这个ppt,免得白看了。ppt来自Linux Security Summit...原创 2018-08-29 14:40:57 · 5398 阅读 · 0 评论 -
如何在macOS上编译android kernel golfdish?
目录环境准备开始编译linux kernel已经编译过很多次了,在macOS上有一些坑要踩,再整理一下,就有了这篇水文。环境准备 由于macOS的磁盘文件系统默认不区分大小写,因此编译源码最好在ubuntu上进行,或者在macOS上创建一块case-sensitive的磁盘+docker编译。本文主要记录一下方法二。 磁盘创建方式:磁盘工具->...原创 2018-09-12 00:38:42 · 1382 阅读 · 0 评论 -
【Kernel】浅谈固件漏洞扫描技术框架—fiber
浅谈固件漏洞扫描技术框架—fiber本篇主要介绍使用fiber框架来扫(fan)描(yi)固(read)件(me)漏洞的过程。这个框架似乎可能是UCR的seclab实验室的一个开源项目,但是却在angr的仓库中(从angr fork而来的)。我们参考UCR仓库中的fiber来介绍它的工作原理。设想如下的一个场景:我们有了target kernel,如Android的boot.img或者是l...原创 2018-10-15 16:47:59 · 1822 阅读 · 0 评论 -
Android安全研究经验谈 @retme
搜paper时,找到的一篇讲的非常好的文章,认同其中相当一部分观点,特转载一下。原文:http://www.360doc.com/content/17/0815/15/43931101_679381550.shtml原文:https://www.csdn.net/article/2015-05-27/2824780 完整版安全研究做什么从攻击角度举例,可以是:对某个模块进行...转载 2018-10-12 11:05:57 · 518 阅读 · 0 评论 -
【Kernel】漏洞利用技术 Heap Spray检测方法研究
看文章如果没有点产出,过个一两天可能啥都不记得了。于是就有了这篇水文。paper下载地址:http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=xxaqytxbm201206032这篇paper很短,只有三页,来自上海交通大学信息工程学院,总结了三种heap spray的检测方法。最早,skylined 2...原创 2018-10-09 16:19:34 · 463 阅读 · 0 评论 -
qemu 文件系统制作:自己制作根目录和应用程序 + busybox
参考陈香兰老师Linux源码分析的课件,编译完linux源码之后,准备制作一个文件系统。本文介绍了两种文件系统的生成方式,包括: 1. 自己制作init和/dev/ram和/dev/console(遇到了文件系统的错误,花了很长时间才解决) 2. 利用busybox生成文件系统。0x01首先创建一个应用程序这个程序作为init程序,是linux启动后准备执行的程序。...原创 2018-06-25 13:21:15 · 7176 阅读 · 0 评论