linux
文章平均质量分 94
落樱弥城
无无
展开
-
简单的Elf解析器实现
之前虽然了解过ELF文件的具体格式,但是对改文件的理解还是存在一些不足,因此本文尝试写了一个简单的ELF解析器对ELF文件进行解析并输出Header,Program Header Table和Section Header Table。原创 2023-07-04 00:05:22 · 396 阅读 · 0 评论 -
Windows和Linux动态注入
摘要:最近对动态注入有一些兴趣因此搜索了些资料,简单整理了下相关的技术实现。本文只能够带你理解何如注入以及大概如何实现,对注入的方法描述的并不详细。 关键字:dll注入,hook,提权 读者须知:读者需要对Windows和Linux dll加载的基本流程比较熟悉。 注入就是将自己的代码注入到目标进程中强制目标进程执行,而动态注入就是将动态库强制加载进目标进程的进程空间从而对目标进程进行修改。动态注入有利有弊,可以用于反病毒、反外挂也可以用于投毒或者制作外挂。1 DLL注入 DLL是wi原创 2023-06-23 22:35:12 · 1308 阅读 · 0 评论 -
ELF文件格式简介
简单了解下ELF文件的格式。1 简介 可执行与可链接格式 (Executable and Linkable Format,ELF),常被称为 ELF格式,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式,一般用于类Unix系统,比如Linux,Macox等。ELF 格式灵活性高、可扩展,并且跨平台。比如它支持不同的字节序和地址范围,所以它不会不兼容某一特别的 CPU 或指令架构。这也使得 ELF 格式能够被运行于众多不同平台的各种操作系统所广泛采纳。 E.原创 2022-05-03 23:50:47 · 14258 阅读 · 1 评论 -
Linux进程通信之共享内存
文章目录1 内存映射1.1 内存映射1.2 内存映射共享数据例子1.3 内存映射空间增长的问题2 Posix共享内存2.1 Posix 共享内存2.2 简单的共享计数2.3 生产者消费者3 System V共享内存4 共享内存的限制 共享内存是所有IPC中最快的,因为大多数数据读写都要经历读数据(数据从内核复制到进程地址空间)->发送数据(数据从用户地址空间复制到内核空间)->接收端收到数据(从内核空间将数据复制到进程地址空间),此间最少需要多次系统调用。而进程使用共享内存传递数据不再涉及内原创 2020-09-14 22:27:44 · 482 阅读 · 2 评论 -
Linux进程通信之同步
文章目录1 互斥锁1.1 简介1.2 生产者-消费者模型2 信号量2.1 简介2.2 互斥同步3 读写锁4 记录锁4.1 文件锁和记录锁4.2 劝告型上锁(建议锁)4.3 强制型上锁4.4 读写锁的优先级问题4.5 记录锁的其他用途1 互斥锁1.1 简介 互斥锁(Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对原创 2020-09-07 20:59:42 · 422 阅读 · 0 评论 -
linux进程通信之消息队列
文章目录1 消息队列2 信号3 示例程序3.1 创建和销毁消息队列3.2 单服务器单客户端同步通信3.3 消息队列简单的信号通知3.4 异步安全的消息队列信号通知3.5 通过管道实现异步安全3.6 新开线程实现数据读取3.7 实时信号示例 消息队列是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与原创 2020-09-03 21:42:38 · 1171 阅读 · 0 评论 -
linux进程通信之管道
操作系统中每个进程都是独立的资源分配的最小单位,互相是隔离的。进程通信就是为了使得不同进程之间互相访问资源并进行协调工作。 需要注意的是示例代码中所有以l开头的代码都是经过封装的库函数,和库函数的功能没有区别,比如:int lwrite(int writefd, char *buff, int len){ int ret = write(writefd, buff, len); ERROR_CHECK(ret, <, 0, writefd, "write data into原创 2020-09-02 13:09:34 · 367 阅读 · 0 评论 -
网际传输协议和传输控制协议(IP,TCP,IP)
文章目录1 简介2 IP2.1 简介2.2 IP的可靠性2.1 IP Header2.3 IP分片和重组3 TCP3.1 简介3.2 TCP Header3.3 TCP 三次握手3.3.1 为什么是三次握手3.4 TCP四次挥手3.5 TCP 流量控制3.6 TCP 拥塞控制3.6.1 慢启动3.6.2 拥塞避免3.6.2 快速重传3.6.3 快速恢复3.7 TCP Socket编程3.7.1 过程3.7.2 socket API3.7.3 简单示意3.8 TCP黏包问题4 UDP4.1 UDP Heade原创 2020-06-04 17:03:06 · 4142 阅读 · 0 评论 -
Linux IO模式及IO多路复用
1 简介 Linux的设计哲学是“一切皆为文件”,比如磁盘被抽象为块设备,键盘被抽象为字符设备等等。因此对不同设备读取和写数据时可以使用系统调用write和read两个操作进行数据交互。通常读取数据的过程是使用open打开一个文件描述符–>使用write或者read读写数据–>使用close关闭文件。 然而对于计算机系统,请求数据本身是一个过程,现代操作系统大多采用段页式虚拟内存进行内存管理。在Linux中如果目标数据不在内存中则需要出发缺页中断将数据缓存到页缓存中供用户端使用,即数据原创 2020-06-03 12:28:03 · 310 阅读 · 0 评论