自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 1940

原创 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 4709 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 1807

原创 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 645

原创 如何将linux audit产生的审计信息传入到其他程序中(利用audispd)

前提了解: 首先我们要了解的一点前提是, 在audit启动的时候会到日志分发做初始化,其中包括对/sbin/audispd的启动(在配置文 件/etc/audit/auditd.conf中配置), 然后审计auditd会将产生的审计发送给audispd一份, 再接着,audispd可以根据自己的配置将审计信息发送给一个或多个程序,很明显我们要想将auditd的审计发...

2020-04-29 13:58:13 2505 5

原创 libevent的锁机制之调试锁的使用

1)调试锁的启用 evthread_use_pthreads() //此函数的介绍看我的上一篇博客 evthread_enable_lock_debugging() //此函数的介绍看下面 看代码这两个的调用顺序没有硬性要求,从官方文档看为了安全这个调用顺序还是按照这个顺序比较好 这两个函数必须在使用锁之前被调用,也就是在使用event base之前就先调...

2020-04-22 20:16:39 445

原创 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 5011

原创 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 993

原创 libevent 之如何将信号和epoll相结合 简化版

/******************************************************原理: 创建一个管道,一个读 一个写, 让epoll监控读端,如果信号发生,就将信号值写入到管道中 这样epoll就能从读端读出信号值***********************************************/#define _GNU_SOURCE ...

2020-04-09 19:52:40 212

原创 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 151

原创 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 233

原创 libevent对信号监控

#include <stdio.h>#include <stdlib.h>#include <event2/bufferevent.h>#include <event2/buffer.h>#include <event2/listener.h>#include <event2/util.h>#include &lt...

2020-03-27 18:47:00 154

原创 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 648

转载 利用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 1431

原创 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 169

原创 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 308

原创 释放页__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 942 2

原创 linux内核函数伙伴系统部分expand()

先看个分配图在看下面的函数static inline void expand(struct zone *zone, //内存区域 struct page *page, //页块首页地址 int low, //需要的页阶 ...

2019-07-12 11:55:44 333

原创 内核内存相关图

用户空间内存布局(经典 与新布局方式)

2019-07-11 10:54:53 98

原创 如何让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 813

原创 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 1364

原创 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 153

原创 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 427

原创 系统调用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 986

原创 c语言实现定时器时间轮

本代码是在根据内核中的时间轮代码进行改造 适用于应用层,若发现问题 欢迎指正/* *毫秒定时器 采用多级时间轮方式 借鉴linux内核中的实现 *支持的范围为1 ~ 2^32 毫秒(大约有49天) *若设置的定时器超过最大值 则按最大值设置定时器 **/#include <stdio.h>#include <stdlib.h>#include &l...

2019-05-14 09:56:03 5440 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 102

原创 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 327

转载 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 260

原创 内核模块在/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 1179

原创 了解数字签名

(1)什么是数字签名?A发消息给B, A将消息用散列函数生成一个散列值确保信息不被修改,然后A用自己的私钥对散列值进行加密,A将加密后的散列值和消息一起发送给BB接收到消息后,B也用散列函数生成一个散列值,然后用A的公钥将A发送来的加密的散列值进行解密,两个散列值进行对比,看消息是否被修改过如下图: (2)为什么需要数字签名? 如下图A喜欢B,于是A一个消息"我爱你" 给B,...

2019-01-23 11:44:22 203

原创 linux c编程实现vsftpd是否支持匿名账户

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;sys/types.h&gt; /* See NOTES */#include &lt;sys/socket.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#inc...

2019-01-21 18:33:37 123

原创 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 429

原创 tcp,tcp syn,tcp fin,tcp null,icmp 扫描linux c代码实现

.c 文件#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;sys/types.h&gt; #include &lt;s...

2019-01-16 16:55:42 1167

原创 时钟中断初始化

2019-01-02 18:31:34 668

原创 从cmos中读取时间

(1) 从0x70设置要读取的偏移字节   outb(add,0x70)     从0x71中将此字节中的数据读出来  ret = inb(0x71)      若要设置偏移字节中的数据可用      outb(add,0x70);  //设置要写入数据的地址      outb(val,0x71);  //将数据写入此地址(2) cmos中的字节偏移代表的含义看博客    ...

2018-12-29 11:46:37 2301

转载 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 1196

原创 percpu基础知识

(1)将.data.percpu数据段中的数据复制到每个cpu的percpu地址start_kernel()-&gt;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 2063

原创 process_backlog()

static int process_backlog(struct napi_struct *napi, int quota){ int work = 0; //获得当前cpu私有数据softnet_data struct softnet_data *queue = &amp;__get_cpu_var(softnet_data); unsigned long start_tim...

2018-12-12 15:11:08 816

原创 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 2440

原创 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-&gt;tstamp.tv64)...

2018-12-12 11:36:51 9050

systemtap脚本编写基础很详细

很全面详细的讲解了systemtap脚本编写基础语法,很好的入门文档

2018-04-18

linux c函数实例

函数实例 linux c各种函数的使用

2017-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除