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

内核的设置

此外,如果使用了 madvise(2) MADV_DONTDUMP 标志,则核心可能会排除进程的部分地址空间。 启用内核 使用ulimit命令可以查看当前的内核功能是否生效。...-c表示内核文件的大小限制,0表示内核无效。 root@firefly:~# ulimit -c 0 使用以下命令即可开启内核功能,unlimited表示不限制core文件的大小。...由于共享内存的进程中,共享内存的内容是相同的,所以可以只在某个进程中转共享内存,无需全部。 bit 0 匿名私有映射。 bit 1 匿名共享映射。 bit 2 文件支持的私有映射。...bit 3 文件支持的共享映射。 bit 4(自 Linux 2.6.24 起) ELF 标头。 bit 5(自 Linux 2.6.28 起)私有大页面。...bit 6 (自 Linux 2.6.28) 共享大页面。 bit 7(自 Linux 4.4 起)私有 DAX 页面。 bit 8(自 Linux 4.4 起)共享 DAX 页面。

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

驱动开发:内核中实现Dump进程

多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导出...图片在上一篇文章《驱动开发:内核R3与R0内存映射拷贝》介绍了一种方式SafeCopyMemory_R3_to_R0可以将应用层进程的内存空间映射到内核中,要实现内存功能我们还是需要使用这个映射函数...在实现转存之前,需要得到两个东西,进程内模块基地址以及模块长度这两个参数是必不可少的,至于内核中如何得到指定进程的模块数据,在很早之前的文章《驱动开发:内核中枚举进线程与模块》中有详细的参考方法,这里就在此基础之上实现一个简单的进程模块遍历功能...如下代码中使用的就是枚举进程PEB结构得到更多参数的具体实现,如果不懂得可以研读《驱动开发:内核通过PEB得到进程参数》这篇文章此处不再赘述。...SafeCopyMemory_R3_to_R0将进程内存读取到缓冲区内,并将缓冲区写出到C盘目录下。

59540

驱动开发:内核中实现Dump进程

多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导出...在上一篇文章《驱动开发:内核R3与R0内存映射拷贝》介绍了一种方式SafeCopyMemory_R3_to_R0可以将应用层进程的内存空间映射到内核中,要实现内存功能我们还是需要使用这个映射函数,只是需要在此函数上增加一些功能而已...在实现转存之前,需要得到两个东西,进程内模块基地址以及模块长度这两个参数是必不可少的,至于内核中如何得到指定进程的模块数据,在很早之前的文章《驱动开发:内核中枚举进线程与模块》中有详细的参考方法,这里就在此基础之上实现一个简单的进程模块遍历功能...如下代码中使用的就是枚举进程PEB结构得到更多参数的具体实现,如果不懂得可以研读《驱动开发:内核通过PEB得到进程参数》这篇文章此处不再赘述。...很简单只是利用了SafeCopyMemory_R3_to_R0将进程内存读取到缓冲区内,并将缓冲区写出到C盘目录下。

84530

4.5 Windows驱动开发:内核中实现进程数据

在上一篇文章《内核R3与R0内存映射拷贝》介绍了一种方式SafeCopyMemory_R3_to_R0可以将应用层进程的内存空间映射到内核中,要实现内存功能我们还是需要使用这个映射函数,只是需要在此函数上增加一些功能而已...ProcessDumps的实现流程: ProcessDumps 代码的功能是将一个进程的内存空间(Dump)到磁盘上的一个文件中,该函数接收三个参数,并返回内存转存的状态; 参数 pEprocess...参数 nBase:要内存空间的基地址。 参数 nSize:要内存空间的大小。...2.分配一个大小为 nSize 的缓冲区,用于存储要内存空间。 3.如果要的进程不是当前进程,则将当前线程切换到要的进程的上下文中,以便能够访问要的进程的内存空间。...4.调用函数 SafeCopyMemory_R3_to_R0,将要内存空间中的数据复制到缓冲区中。 5.如果线程被切换到了要的进程的上下文中,则将线程切换回当前进程的上下文中。

15230

Linux内核高端内存

Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。 段页式机制如下图。 ?...Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。 ?...Linux内核高端内存的由来 当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0xc0000003对应的物理地址为0x3,0xc0000004...Linux内核高端内存的理解 前面我们解释了高端内存的由来。...2、64位内核中有高端内存吗? 目前现实中,64位Linux内核不存在高端内存,因为64位内核可以支持超过512GB内存。若机器安装的物理内存超过内核地址空间范围,就会存在高端内存

4.3K31

Linux 上创建并调试文件

崩溃内存、核心、系统……这些全都会产生同样的产物:一个包含了当应用崩溃时,在那个特定时刻应用的内存状态的文件。...因为这种类型的退出信号是预期的,所以这个操作不会创建一个内存。...否则,用以下方法纠正限制: ulimit -c unlimited 要禁用创建核心,可以设置其大小为 0: ulimit -c 0 这个数字指定了核心文件的大小,单位是块。 什么是核心?...内核处理核心的方式定义在: /proc/sys/kernel/core_pattern 我运行的是 Fedora 31,在我的系统上,该文件包含的内容是: /usr/lib/systemd/systemd-coredump...在不同的 Linux 发行版中,core_pattern 的内容会有很大的不同。

3.2K30

Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )

文章目录 一、Linux 内核 动态分配内存 系统接口函数 二、统计输出 vmalloc 分配的内存 一、Linux 内核 动态分配内存 系统接口函数 ---- Linux 内核 " 动态分配内存 "...是通过 " 系统接口 " 实现的 , 下面介绍几个重要的 接口函数 ; ① 以 " 页 " 为单位分配内存 : alloc_pages , __get_free_page ; ② 以 " 字节 " 为单位分配..." 虚拟地址连续的内存块 " : vmalloc ; ③ 以 " 字节 " 为单位分配 " 物理地址连续的内存块 " : kmalloc ; 注意 该 " 物理地址连续的内存块 " 是以 Slab 为中心的...; 二、统计输出 vmalloc 分配的内存 ---- 执行 grep vmalloc /proc/vmallocinfo 命令 , 可以统计输出 通过 vmalloc 函数分配的 " 虚拟地址连续的内存

5.1K30

Linux 内存池【

不仅在用户态应用程序中被广泛使用,同时在Linux内核也被广泛使用,在内核中有不少地方内存分配不允许失败。...作为一个在这些情况下确保分配的方式,内核开发者创建了一个已知为内存池(或者是 "mempool" )的抽象,内核内存池真实地只是相当于后备缓存,它尽力一直保持一个空闲内存列表给紧急时使用,而在通常情况下有内存需求时还是从公共的内存中直接分配...下面看下内核内存池的源码,内核内存池的源码在中,实现上非常简洁,描述内存池的结构; mempool_t在头文件中定义,结构描述如下: typedef struct mempool_s { spinlock_t...return element; } ...... } 函数先是从pool_data中申请元素对象,当从pool_data无法成功申请到时,才会从池中提取对象使用,因此可以发现内核内存池...order = (int)(long)pool_data; __free_pages(element, order); } 总体上来讲mempool的实现很简约,但是不简单,而且非常轻便易用,这也是内核奥妙之所在

4.8K50

Linux内核最新的连续内存分配器(CMA)——避免预留大块内存

在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。...声明连续内存 内核启动过程中arch/arm/mm/init.c中的arm_memblock_init()会调用dma_contiguous_reserve(min(arm_dma_limit, arm_lowmem_limit...err:         pr_err("CMA: failed to reserve %ld MiB\n", size / SZ_1M);         return base; } 由此可见,连续内存区域也是在内核启动的早期...内核内存分配的migratetype 内核内存分配的时候,带的标志是GFP_,但是GFP_可以转化为migratetype: static inline int allocflags_to_migratetype.../module.h> #include #include #include #include <linux

3.5K20

文件泄露

最近在进行渗透测试项目的时候遇到了一个Actuator配置不当的场景,通过其提供的执行器端点获取到了heapdump堆文件,经过简单分析后获得了JDBC明文密码等敏感信息。...获取应用程序的定制信息 /actuator/trace # 显示最后几条HTTP消息 /actuator/logfile # 输出日志文件的内容 /actuator/heapdump # 堆文件...Heapdump堆文件 Heapdump,即堆文件,是一个Java进程在某个时间点上的内存快照。...JVisualVM是一个监视,故障排除工具 也可以使用Eclipse MAT对其进行分析 参考:Java内存泄漏分析系列之六:JVM Heap Dump(堆文件)的生成和MAT的使用 ?...参考 Springboot之actuator配置不当的漏洞利用 Java内存泄漏分析系列之六:JVM Heap Dump(堆文件)的生成和MAT的使用 Springboot 获取被星号脱敏的密码的明文

96840

linux内核升级图文攻略

一、Linux内核概览 Linux是一个一体化内核(monolithic kernel)系统。 设备驱动程序可以完全访问硬件。...相对于Linux操作系统内核版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。...2、加载和执行引导程序  系统引导程序主要是把系统内核装载到内存,启动盘必须在第一个逻辑磁道上包含引导记录。...Linux的 引导程序由汇编代码文件arch/i386/boot/bootsect.S生成, 它利用对BIOS功能的调用将 arch/i386/boot/下的setup.S文件和内核映象加载到内存。...将内核映象一块一块的装入内存,当内核加载完毕,系统跳转到setup.S的开始位置开始执行, setup.S仍在实模式下运行,主要功能是设置系统参数 (如:内存、磁盘等), 并为进入保护模式做准备,

3K51

MySQL Shell和加载第3部分:加载

作者:Alfredo Kojima 译:徐轶韬 这是有关MySQL Shell和加载的博客文章系列的第3部分 MySQL Shell和加载实用程序是MySQL Shell 8.0.21提供的新工具...但是,这种情况很少见,您经常会遇到一个线程1或2个巨大的表,而其他线程都已完成并处于空闲状态的情况。它还将到单个SQL文件,从而创建一个序列化点。...格式 与mysqldump,mysqlpump产生的不同,Shell将DDL,数据和元数据写入单独的文件。表也细分为大块,并写入多个类似CSV的文件中。...这可能会有一些缺点,因为不可以方便地复制的单个文件。但是,有几个优点: 加载不再是一个全有或全无的过程。...同样重要的是,通过加载这些还原服务器也要快得多。与加载等效的.sql文件相比,从Shell中还原大型数据库仅需花费一小部分时间。当需要紧急恢复时,这可以释放一些宝贵的时间!

1.3K10

Linux内核编程--内存映射和共享内存

文件的内存映射示意图: 对于用户进程和内核进程: 将用户进程的一段内存区域映射到内核进程,映射成功后,用户进程对这段内存区域的修改直接反映到内核空间,同样,内核进程对这段内存区域的修改也直接反映到用户空间...没有内存映射的I/O操作示意图: 磁盘->内核空间->用户空间 有内存映射的I/O操作示意图:少了一个copy操作 内存映射的优点: 减少了拷贝次数,节省I/O操作的开支 用户空间和内核空间可以直接高效交互...offset); start:用户进程中要映射的某段内存区域的起始地址,通常为NULL(由内核来指定) length:要映射的内存区域的大小 prot:期望的内存保护标志 flags:指定映射对象的类型...一般用信号量来同步共享内存的访问。 共享内存区在系统存储中的位置: 为什么要用共享内存: 对于涉及到内核操作的,内核和进程之间,经历了四次复制操作,开销很大。..., int shmflg) --shmid:共享内存区的标识id,shmget的返回值 --shmaddr:共享内存附加到本进程后在本进程地址空间的内存地址,若为NULL,由内核分配地址。

5.8K10

Linux 内核 VS 内存碎片 (下)

Linux 内核 VS 内存碎片 (上) 我们可以看到根据迁移类型进行分组只是延缓了内存碎片,而并不是从根本解决,所以随着时间的推移,当内存碎片过多,无法满足连续物理内存需求时,将会引起性能问题。...因此仅仅依靠此功能还不够,所以内核又引入了内存规整等功能。...内存规整 在内存规整引入之前,内核还使用过 lumpy reclaim 来进行反碎片化,但在我们当前最常用的 3.10 版本内核上已经不存在了,所以不做介绍,感兴趣的朋友请从文章开头整理的列表中自取,我们来看内存规整...对于 3.10 版本内核内存规整的时机如下: 在分配高阶内存失败后 kswapd 线程平衡 zone; 直接内存回收来满足高阶内存需求,包括 THP 缺页异常处理路径; khugepaged 内核线程尝试...,但需要对内核相关子系统的工作原理要有一定理解,对客户的内核版本也有一定要求。

3.5K30
领券