- 2024-11-05IO 多路复用技术:原理、类型及 Go 实现
文章目录1.引言IO多路复用的应用场景与重要性高并发下的IO处理挑战2.IO多路复用概述什么是IO多路复用IO多路复用的优点与适用场景3.IO多路复用的三种主要实现3.1`select`3.2`poll`3.3`epoll`三者对比4.深入理解epoll4.1epoll的三大操作4.2epoll的
- 2024-10-26[asm]: linux syscall number(32bits_64bits)
[asm]:linuxsyscallnumber(32bits_64bits) 一、32bit_syscall_number(451个系统调用)1[root@rocky:tmp]#catlinux_syscall_no_32.txt2//date:2024-10-263//usingFor:4//--AssemblyLanguage(nasm,gas)5//--syscall
- 2024-10-26Mit6.S081笔记Lab2: system calls 系统调用
课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/syscall.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/syscall相关翻译:http://xv6.dgs.zone/labs/requirements/lab2.html参考博客:https:
- 2024-09-01羊城杯2024 pwn4的反思
前言今天无聊乱刷的时候发现有师傅说羊城杯的pwn4(hardsandbox)用openat2只能打通本地,远程无法打通,于是点击看了一下文章,发现了一个对沙箱的逃逸的知识点。正文为什么openat2无法打通远程Qanux师傅说是远程的kernel(linux内核)版本是5.4,而openat2系统调用是在kernel5.6
- 2024-09-01一个操作系统的设计与实现——第23章 快速系统调用
23.1什么是快速系统调用系统调用是操作系统为3特权级任务提供服务的一种手段。在32位操作系统中,我们通过中断实现了系统调用。由于系统调用是一个使用非常频繁的机制,且中断也不是专门为系统调用设计的,因此,64位CPU提供了系统调用的专用机制:快速系统调用。快速系统调用由专用的sy
- 2024-08-10[rCore学习笔记 024]多道程序与协作式调度
写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:
[email protected]:https://github.com/WindDevil(目前啥也没有本节重点主要是对 任务 的概念进行进一步扩展和延伸:形成任务运行状态:任务从开始到结束执行过程中所处的不同运行状态:未初始化、准备
- 2024-07-04Go 使用原始套接字捕获网卡流量
Go使用原始套接字捕获网卡流量Go捕获网卡流量使用最多的库为github.com/google/gopacket,需要依赖libpcap导致必须开启CGO才能够进行编译。为了减少对环境的依赖可以使用原始套接字捕获网卡流量,然后使用gopacket的协议解析功能,这样就省去了解析这部分的工作量,正确性也可
- 2024-06-24mips汇编语言语法
这个博客讲的很好【十分钟教会你汇编】MIPS编程入门(妈妈说标题要高大上,才会有人看>_<!)总览程序分为数据段和代码段:.data声明变量.text书写代码数据段变量名:数据类型变量值代码段syscall为系统调用指令,能够方便我们在Mars上进行预览。利用syscall输出结果的步骤:1.
- 2024-06-15gdb catchsyscall的内核支持
intro通常使用gdb调试器,希望知道某个系统调用的发生时机,直接在该系统调用打断点即可。这里有一个假设就是这里使用的glibc库的实现,但是go生成的可执行文件就是一个单独的、静态链接文件,在go生成文件中,gdb的时候并没有可以打断点监测系统调用的方法。我想在go中大概率有对特定系
- 2024-06-02golang中基于kevent的IO多路复用实践
https://github.com/zongzw-learn/learn-go/tree/master/basics/tcp-pollerkqueue在golang语言下的使用实践将kqueue的操作细节封装在NetPoller接口中,实现KqueuePoller的三个API:Start启动基于kqueue的IO多路复用事件监听Close停止kqueueSetHandler设置可插入式的数据处理
- 2024-05-18Linux/Golang/glibC系统调用
Linux/Golang/glibC系统调用本文主要通过分析Linux环境下Golang的系统调用,以此阐明整个流程有时候涉略过多,反而遭到质疑~,写点文章证明自己实力也好Golang系统调用找个函数来分析https://pkg.go.dev/os/exec#Cmd.Wait源码文件在src/os目录下的:exec.go->exec_unix.go->
- 2024-05-15mit6.828笔记 - lab3 Part B:页面故障、断点异常和系统调用
PartB页面故障、断点异常和系统调用虽然说,我们故事的主线是让JOS能够加载、并运行user/hello.c编译出来的镜像文件。虽然说,经过PartA最后几节,我们初步实现了异常处理的基础设施。但是对于操作系统来说,还远远不够,比如说那个trap_dispatch还没完成。所以在回到故事主线之
- 2024-04-30linux 系统调用分析
一、linux系统调用介绍linux系统调用是linux为用户空间与内核空间交换提供的一组标准API,这些api能够让用户态进程访问内核代码,从而实现系统资源、硬件、文件读写的访问。需要注意的是,系统调用是用户态进入内核态的唯一入口,为了保证linux内核运行的稳定性,用户程序不能随意的访问内
- 2024-04-24MIT6.S081 Lab syscall
这一个实验的主要内容就是给xv6添加两个系统调用:trace和sysinfo。Usinggdb(easy)这个部分我就不做了……M1的MacbookAir上的gdb太难安装了,所以暂时用不了gdb调试……Systemcalltracing(moderate)Inthisassignmentyouwilladdasystemcalltracingfe
- 2024-04-16《Evading EDR》— FUNCTION-HOOKING_DLLS
最近一直在做EDR相关的工作,虽然略有了解EDR的机制,但是并未深究其完整的工作框架和可能的绕过机制,借工作空闲时间依靠智谱清言阅读一下《EvadingEDRTheDefinitiveGuidetoDefeatingEndpointDetectionSystems》一书。在众多现代端点安全产品的组件中,最常部署的是负责函数
- 2024-04-12C 语言宏 + 内联汇编实现 MIPS 系统调用
目录内联汇编宏函数宏定义Syscall内联汇编编译测试笔者最近作业要求练习MIPS汇编,熟悉MIPS汇编代码与C语言代码的对应关系。然而SPIM/MARS仿真器不能链接共享库以调用外部函数(如stdio.h下的函数),只能通过系统调用实现。C语言可以通过内联汇编(InlineAssembly)实现系统
- 2024-04-06免杀-syscall
3x3syscall我们windowsapi的调用,通过层层调用最终还是会进入ntdll的底层函数的调用,再通过syscall快速调用进入0环实现的代码,下面我将记录一些syscall的底层基础知识,最后的代码实现是通过现成项目直接快速调用敏感api,这种现成syscall的项目很多,但是感觉都比较久了免杀效果不太好
- 2024-03-05从零开始写 Docker(四)---使用 pivotRoot 切换 rootfs 实现文件系统隔离
change-rootfs-by-pivot-root.png本文为从零开始写Docker系列第四篇,在mydockerrun基础上使用pivotRoot系统调用切换rootfs实现容器和宿主机之间的文件系统隔离。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大
- 2024-02-23Syscall笔记
本文首发:https://xz.aliyun.com/t/13687基础知识我们知道,系统核心态指的是R0,用户态指的是R3,系统代码在核心态下运行,用户代码在用户态下运行。系统中一共有四个权限级别,R1和R2运行设备驱动,R0到R3权限依次降低,R0和R3的权限分别为最高和最低。而我们的**syscall**是一个计算机
- 2024-02-22从零开始写 Docker(一)---实现 mydocker run 命令
本文为从零开始写Docker系列第一篇,主要实现mydockerrun命令,构造了一个具有基本的Namespace隔离的简单容器。如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。搜索公众号【探索云原生】即可订阅本文主要实现我们的第一个命令mydoc
- 2024-02-05RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一个系统调用
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系统,主
- 2024-01-31手写docker—构造容器(二)
Dockerrun命令实现本文需要实现第一个命令Mydockerrun,类似于dockerrun-it[command]命令。通过创建新的Namespace来对新进程进行视图隔离。核心需要解决如下问题:命令行参数解析的问题,具体实现时通过github.com/urfave/cli库来实现对用户输入命令行的解析,需要解析
- 2024-01-21Go语言核心36讲 46 | 访问网络服务
你真的很棒,已经跟着我一起从最开始初识Go语言,一步一步地走到了这里。在这之前的几十篇文章中,我向你一点一点地介绍了很多Go语言的核心知识,以及一些最最基础的标准库代码包。我想,你已经完全有能力独立去做一些事情了。为了激发你更多的兴趣,我还打算用几篇文章来说说Go语言的网
- 2023-12-092023最新高级难度Go语言面试题,包含答案。刷题必备!记录一下。
好记性不如烂笔头内容来自面试宝典-高级难度Go语言面试题合集问:请深入解释Go语言的内存分配和GC(垃圾回收)机制,以及它们如何影响程序的性能。Go语言的内存管理由内置的垃圾回收器自动进行,它将内存分为三个区域:堆、栈和全局区。栈存放局部变量、参数、返回地址等小对象,堆存
- 2023-12-04go network poller 一
网络基础协议架构tcp链接假如需要开发者去实现一套新的网络协议(例如redis的resp),是基于TCP的,那tcp这层的协议,是否需要开发者自己去实现?这层如果自己实现,其实很复杂,会涉及很多算法相关.因此,出现了socket对传输层进行了抽象,开发者不需要关注传输层具体