- 博客(136)
- 资源 (2)
- 收藏
- 关注
原创 automake 生成的Makefile之 install过程
automake生成的Makefile当你执行make install 的时候我们知道会找install规则,那么具体是怎么安装的呢? 看下面install: install-recursive很显然 install-recursive是依赖install-recursive的,那么install-recursive规则是什么呢?RECURSIVE_TARGETS= ... install-recursive ...找了下install-recursive是放在变量RECURSIVE_TAR..
2020-07-10 14:34:42
2064
原创 open的时候传递O_CREAT出现__open_missing_mode的原因
当你代码中使用open("das",O_CREAT)的时候,注意没有第三个参数。如果你用autoconf生成Makefile来编译的化会出现如下问题error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments __open_missing_mode ();当你直接用gcc test.c -o..
2020-07-01 19:56:26
4870
1
转载 x86_64 系统调用号 与寄存器传参
转载自http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/PUBLISHED THU, NOV 29, 2012Linux 4.7 (pulled fromgithub.com/torvalds/linuxon Jul 20 2016), x86_64Note: 64-bit x86 uses syscall instead of interrupt 0x80. The result value wi...
2020-06-12 15:16:49
2053
原创 linux设置某函数在main函数之前之后执行(通过对.ctors和.dtors节的设置)
第一种方法:#include <stdio.h>#include <stdlib.h>//此函数在main之前执行void before_main(void) __attribute__((constructor));//此函数在main之后执行void after_main(void) __attribute__((destructor));void before_main(void){ printf("start before main\n")
2020-05-09 12:52:46
670
原创 如何将linux audit产生的审计信息传入到其他程序中(利用audispd)
前提了解: 首先我们要了解的一点前提是, 在audit启动的时候会到日志分发做初始化,其中包括对/sbin/audispd的启动(在配置文 件/etc/audit/auditd.conf中配置), 然后审计auditd会将产生的审计发送给audispd一份, 再接着,audispd可以根据自己的配置将审计信息发送给一个或多个程序,很明显我们要想将auditd的审计发...
2020-04-29 13:58:13
2658
5
原创 libevent的锁机制之调试锁的使用
1)调试锁的启用 evthread_use_pthreads() //此函数的介绍看我的上一篇博客 evthread_enable_lock_debugging() //此函数的介绍看下面 看代码这两个的调用顺序没有硬性要求,从官方文档看为了安全这个调用顺序还是按照这个顺序比较好 这两个函数必须在使用锁之前被调用,也就是在使用event base之前就先调...
2020-04-22 20:16:39
471
原创 libevent的锁机制之evthread_use_pthreads()介绍
对于linux libevent已经提供了一套锁机制,我们就不用自己在写一些锁相关的回掉函数(用evthread_set_lock_callbacks设置)供libevent使用,我们在linux上使用锁机制的时候只要使用int evthread_use_pthreads(void) 开启使用多线程机制,那么锁的机制也会自动加入进来int evthread_use_pthreads(void...
2020-04-21 19:18:58
5219
原创 libevent 之 event config的相关函数介绍
1) struct event_config *event_config_new(void)函数功能: 分配一个base 内部配置结构体参数: 无返回值: 成功返回指向struct event_config的指针 失败返回空2) void event_config_free(struct event_config *cfg)函数功能: 释放一个struct event_...
2020-04-10 20:14:27
1026
原创 libevent 之如何将信号和epoll相结合 简化版
/******************************************************原理: 创建一个管道,一个读 一个写, 让epoll监控读端,如果信号发生,就将信号值写入到管道中 这样epoll就能从读端读出信号值***********************************************/#define _GNU_SOURCE ...
2020-04-09 19:52:40
225
原创 libevent 之 基本服务端的使用
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#inclu...
2020-04-07 19:40:12
160
原创 libevent 定时器的使用
#include <stdio.h>#include <stdlib.h>#include <event2/bufferevent.h>#include <event2/buffer.h>#include <event2/listener.h>#include <event2/util.h>#include ...
2020-04-07 19:36:18
248
原创 libevent对信号监控
#include <stdio.h>#include <stdlib.h>#include <event2/bufferevent.h>#include <event2/buffer.h>#include <event2/listener.h>#include <event2/util.h>#include <...
2020-03-27 18:47:00
167
原创 linux c在子函数中获得函数返回地址, 获得当前地址x86_64
#include <stdio.h>#include <stdlib.h>int fun(){ unsigned long ret_addr = 0; __asm__("push %%rax\n\t" "movq 8(%%rbp),%%rax\n\t" "movq %%rax,%0\n\t" ...
2020-01-16 09:35:35
678
转载 利用ptrace进行注入
转载:https://bbs.pediy.com/thread-246948.htm插入的代码#include <stdio.h>#include <unistd.h>int main(){ __asm__( "jmp forward\n\t" "backword:popq %rsi\n\t" ...
2019-11-07 21:06:47
1479
原创 kobject的使用基本框架
下面是伪代码 可以根据此框架写自己的kobject属性struct myobject{ int a; int b; struct kobject object;}g_object;struct myattr{ struct attribute attr; ssize_t (*show)(struct myobject *myobj,char *); ...
2019-10-18 09:48:47
177
原创 uevent的基本使用1
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/stat.h>#include <linux/netlink.h>#include <sys/types.h>...
2019-10-08 12:28:23
324
原创 释放页__free_one_page()
/*释放到指定的伙伴系统类型链表*/ static inline void __free_one_page(struct page *page, struct zone *zone, unsigned int order, int migrat...
2019-07-16 11:08:41
972
2
原创 linux内核函数伙伴系统部分expand()
先看个分配图在看下面的函数static inline void expand(struct zone *zone, //内存区域 struct page *page, //页块首页地址 int low, //需要的页阶 ...
2019-07-12 11:55:44
360
原创 如何让linux下的动态库so能执行(节.interp的使用)
感觉对自己有用 给点个赞哈代码如下mytest.c#include<stdio.h>#include<stdlib.h>//在elf格式中加入一个节.interp 此节含有 ELF 程序解析器的路径名//如果动态库不包括此节就不能被执行//注意你的连接器地址不一定是/lib64/ld-linux-x86-64.so.2这个路径哈 自己查找下你环境中...
2019-07-09 14:39:15
843
原创 linux内核sort()排序的使用
函数原型void sort(void *base,size_t num,size_t size,int (*cmp_func)(const void *, const void *),void (*swap_func)(void *, void *, int size))参数说明base:数据的...
2019-07-09 11:08:22
1477
原创 2.4内核动态模块基本使用方式
module.c#define MODULE //一定要定义此宏#include <linux/kmod.h>#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>static int __init hello_init(void)...
2019-06-28 14:04:31
170
原创 linux 如何隐藏 /proc/目录下的文件(version 2.6 其他版本没适配)
只为研究而用 禁止用于非法行为!!!!!/* *通过加载此模块 来将/proc目录下的文件进行隐藏* 使用方式 insmod xx.ko hidestr='xxxx' * */#include <linux/kmod.h>#include <linux/module.h>#include <linux/init.h>#include &...
2019-06-06 15:44:43
448
原创 系统调用nice()的内核之路
调用过程nice()->sys_nice()函数原型int nice(int inc);SYSCALL_DEFINE1(nice, int, increment)sys_nice()分析SYSCALL_DEFINE1(nice, int, increment){ long nice, retval; //下面是对参数的校验 并修正 if (increm...
2019-05-22 10:10:12
1032
原创 c语言实现定时器时间轮
本代码是在根据内核中的时间轮代码进行改造 适用于应用层,若发现问题 欢迎指正/* *毫秒定时器 采用多级时间轮方式 借鉴linux内核中的实现 *支持的范围为1 ~ 2^32 毫秒(大约有49天) *若设置的定时器超过最大值 则按最大值设置定时器 **/#include <stdio.h>#include <stdlib.h>#include &l...
2019-05-14 09:56:03
5508
4
转载 同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
转自https://www.cnblogs.com/euphie/p/6376508.htmlPOSIX同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是...
2019-04-10 15:17:11
116
原创 linux c将缓存字符串进行编码转换
#include <stdio.h>#include <stdlib.h>#include <iconv.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <i...
2019-03-29 16:39:07
340
转载 create_workqueue和create_singlethread_workqueue【转】
本文转载自:http://bgutech.blog.163.com/blog/static/18261124320116181119889/1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简...
2019-03-26 11:04:59
280
原创 内核模块在/sys/module/xx/产生自己的配置文件
下面代码会产生/sys/module/xxx/security/testhello 配置文件#include <linux/kmod.h>#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/kobject...
2019-03-25 16:46:03
1206
原创 了解数字签名
(1)什么是数字签名?A发消息给B, A将消息用散列函数生成一个散列值确保信息不被修改,然后A用自己的私钥对散列值进行加密,A将加密后的散列值和消息一起发送给BB接收到消息后,B也用散列函数生成一个散列值,然后用A的公钥将A发送来的加密的散列值进行解密,两个散列值进行对比,看消息是否被修改过如下图: (2)为什么需要数字签名? 如下图A喜欢B,于是A一个消息"我爱你" 给B,...
2019-01-23 11:44:22
217
原创 linux c编程实现vsftpd是否支持匿名账户
#include <stdio.h>#include <stdlib.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <sys/socket.h>#include <netinet/in.h>#inc...
2019-01-21 18:33:37
134
原创 kail常见问题总结
版本Kali Rolling, 内核版本:4.18.0目录sshd远程root登录kail 密码输入正确,却一直报密码错误的问题决绝添加固定ip sshd远程root登录kail 密码输入正确,却一直报密码错误的问题决绝root@kali:~# vim /etc/ssh/sshd_config修改如下:添加固定ip (1) root@kali:~#...
2019-01-18 15:05:41
453
原创 tcp,tcp syn,tcp fin,tcp null,icmp 扫描linux c代码实现
.c 文件#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/types.h> #include <s...
2019-01-16 16:55:42
1189
原创 从cmos中读取时间
(1) 从0x70设置要读取的偏移字节 outb(add,0x70) 从0x71中将此字节中的数据读出来 ret = inb(0x71) 若要设置偏移字节中的数据可用 outb(add,0x70); //设置要写入数据的地址 outb(val,0x71); //将数据写入此地址(2) cmos中的字节偏移代表的含义看博客 ...
2018-12-29 11:46:37
2376
转载 cmos字节的含义
转载 https://www.xuebuyuan.com/1042226.html偏移值(Offset) 数据字段的意义描述(Description) 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 目前系统时间的“秒数”字段 预约警铃时间的“秒数”字段 目前系统时间的“分...
2018-12-29 11:42:14
1240
原创 percpu基础知识
(1)将.data.percpu数据段中的数据复制到每个cpu的percpu地址start_kernel()->setup_per_cpu_areas()复制后的结果图如下:代码如下:void __init setup_per_cpu_areas(void){ unsigned long size, i; char *ptr; //取得cpu数量 unsig...
2018-12-14 11:57:55
2093
原创 process_backlog()
static int process_backlog(struct napi_struct *napi, int quota){ int work = 0; //获得当前cpu私有数据softnet_data struct softnet_data *queue = &__get_cpu_var(softnet_data); unsigned long start_tim...
2018-12-12 15:11:08
841
原创 net_rx_action()
/*net_rx_action()会从两个地方取帧数据:(1)非NAPI设备的中断处理流程把帧放入本地cpu私有数softnet_data 的接收队列中(2)调用NAPI设备驱动的poll方法会直接从设备内存(或设备驱动程序接收环)中取出帧*/static void net_rx_action(struct softirq_action *h){ /*取得本地cpu ...
2018-12-12 14:38:05
2565
原创 netif_rx()处理过程
int netif_rx(struct sk_buff *skb){ struct softnet_data *queue; unsigned long flags; //netpoll是否会使用此skb if (netpoll_rx(skb)) return NET_RX_DROP; //设置包接收的时间戳 if (!skb->tstamp.tv64)...
2018-12-12 11:36:51
9324
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人