
linux
文章平均质量分 80
ijk11
看看我能发几篇文章
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux LD链接器 -静、动库编译or链接
使用动态、静态链接只会影响你链接后的可执行文件类型$ gcc main.c func.o #动态链接 $ file a.out && du a.out16K a.out$ gcc main.c func.o -static #静态链接 $ file a.out && du a.out880K a.out使用动态、静态打包,并链接不会影响文件大小如果需要编译静态程序那么链接的共享库是也必须是静态库。原创 2023-04-29 00:14:58 · 2132 阅读 · 0 评论 -
glibc-malloc申请堆空间流程分析
fast chunk就直接进入fast bin先进后出,其他bin则先进入unsort bin充当缓存作用。进行unsort bin遍历进行free chunk合并、归类在对应的bin区域查找。大于fast bin后进入unsort bin查找合适大小free chunk。小于fast bin大小时在fast bin中查找。:为了更快的找到最合适的堆块搜索顺序为如下。top chunk(切分chunk)bins(是否有最小能满足的)(满足一个条件即退出流程)top chunk划分。原创 2023-03-16 11:58:30 · 524 阅读 · 0 评论 -
linux内核-内存管理
*分配一块给某个数据结构使用的缓存描述符name:对象的名字 size:对象的实际大小 align:对齐要求,通常填0,创建是自动选择。flags:可选标志位 ctor: 构造函数 */ struct kmem_cache * kmem_cache_create(const char * name , size_t size , size_t align , unsigned long flags, void(* ctor)(void *));原创 2023-01-29 23:17:47 · 1479 阅读 · 1 评论 -
vim实用命令
文章:https://juejin.cn/post/7084462939595341831。原创 2023-01-29 23:15:15 · 537 阅读 · 0 评论 -
linux内核-内存管理slub分配器
slub分配器使用kmem_cache数据结构slab分配器的对象单位–>管理自己的kmem_cache–>kmem_cache存在于slab_caches双链表中kmem_cache里的一些小slab对象–>存在于“kmem_cache_node->partial”中 --> 每个node对应于kmem_cache_node数组项kmem_cache里的另一部分小slab对象–>存在于“kmem_cache_cpu->partial”中slab中没有原创 2022-04-23 17:40:14 · 1489 阅读 · 0 评论 -
提权姿势modprobe_path修改文件权限
最近看内核exp时候一些题目的另一种解法可以通过modprobe_path方式读取flag,好像挺好玩的定义在内核运行一个未知类型的文件时,modprobe_path就会指向这个未知文件,当内核运行一个错误格式的文件后,内核会自动调用这个modprobe_path指向的文件,因为内核执行的权限是root权限,当我们将modprobe_path指向一个我们用于查看具有root权限的flag文件,那么就能得到flag//源码定义如下:kernel/kmod.cchar modprobe_path[KMO原创 2022-05-02 20:20:11 · 601 阅读 · 0 评论 -
GCC __ATTRIBUTE__机制
在glibc源代码中你可能会看到大量的__attribute__关键字,譬如常用的stdio.h中开头处就能见到它的身影了#ifndef _STDIO_H# if defined __need_FILE || defined __need___FILE || defined _ISOMAC# include <libio/stdio.h># else# include <libio/stdio.h>/* Now define the internal interfa原创 2022-05-18 15:56:39 · 291 阅读 · 0 评论 -
linux sh解释器
Shell定义Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序变量定义变量:变量名=变量值,等号两侧不能有空格,变量名一般习惯用大写。删除变量:unset 变量名 。声明静态变量:readonly 变量名,静态变量不能unset。使用变量:$变量名将命令返回值赋给变量:A=`ls` 或 A=$(ls) 反引号,执行里面的命令环境export 变量名=变量值,将 Sh原创 2022-05-18 15:57:17 · 673 阅读 · 0 评论 -
linux线程
文章目录一、线程二、线程分离回收回收资源:1. 使用pthread_join()函数进行回收2. 使用线程分离属性使系统自动回收:获取线程返回码线程取消线程终止释放、清理三、信号处理信号发送信号接收可靠信号&&不可靠信号四、多线程信号处理本课题环境:ubuntu16、glibc 2.23一、线程概念:线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程线程定义在pthread.h文件中,那么要创建线程就要进行引用预编译,线程创建函数定义如下:#includ原创 2021-12-23 11:20:15 · 2579 阅读 · 0 评论 -
Makefile学习
定义Makefile 是一个工程文件的编译规则,描述了整个工程的编译和链接等规则使用场景数学计算库 math 中的函数,我们得手动添加参数 -Im;小型数据库 SQLite 中的函数,我们得手动添加参数 -lsqlite3;线程,我们需要去手动添加参数 -lpthread。多个文件链接Makefile 支持多线程并发操作,会极大的缩短我们的编译时间,并且当我们修改了源文件之后,编译整个工程的时候,make 命令只会编译我们修改过的文件,没有修改的文件不用重新编译,不增加或者原创 2022-05-18 15:58:42 · 817 阅读 · 0 评论 -
vim\neovim美化 + 终端美化配置
VIM为了方便大家在不同的平台都能成功配置,考虑到不同的包管理下载的vim都是不同版本的,这里直接采用源码编译版本进行使用效果图:用了一段时间的spacevim 因为非常讨厌它的底部弹窗,索性该用vim脚本:#安装代码提示插件 #依赖sudo apt install g++-8sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g+原创 2022-04-15 17:15:29 · 3954 阅读 · 0 评论 -
物理机-ubuntu系统搭建+全局美化
文章目录1.下载ubuntu2.美化ubuntu注意的点 :3.终端美化4.vim美化前言 : 寒假回来想着把堆攻击学习完,打算这段世间就只学习pwn索性就直接在物理机上面安装了ubuntu ,过程也不是很顺利,然后又美化了一下ubuntu,ok,下面就是我这几天总结出来的经验(下面的网站有的可能需要翻墙! )1.下载ubuntu准备 :一个大于4G的U盘 ,用于当作系统盘(买U盘的时候注意问下支不支持作系统盘!)下载你要安装的ubuntu镜像(ios文件) 在清华大学镜像站下载 : 链接 ,原创 2022-01-09 16:43:06 · 1817 阅读 · 0 评论