、物理页分配相关标志位完整源码 一、物理页分配标志位分析 ---- 使用 水线位 分配内存 , 相关源码定义在 Linux 内核源码的 linux-4.12\mm\internal.h#475 位置 ;...: linux-4.12\mm\internal.h#475 2、水线位源码 ( ALLOC_WMARK_MASK ) ALLOC_WMARK_MASK 宏定义 , 表示 获取 " 水线位 " 的...掩码 ; /* Mask to get the watermark bits */ #define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1) 源码路径 : linux...cpuset */ #define ALLOC_CMA 0x80 /* allow allocations from CMA areas */ 源码路径 : linux-4.12\mm\internal.h...*/ #define ALLOC_CMA 0x80 /* allow allocations from CMA areas */ 源码路径 : linux-4.12\mm\internal.h#475
linux安装Node.js(详细)Node.js安装教程 文章目录 linux安装Node.js(详细)Node.js安装教程 1:下载 2:解压 3:移动目录 1:创建目录 2:移动目录并重命名 4...:设置环境变量 5:刷新修改 6:安装完成,查看版本号 1:下载 wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz...更多版本选择: ===》更多nodejs版本下载 2:解压 tar xf node-v14.17.4-linux-x64.tar.xz 可以查看当前目录下的文件,执行:ls (命令) 解压成功后可以选择删除压缩包...:rm -rf node-v14.17.4-linux-x64.tar.xz 其中:-f 会提醒是否删除 ;-rf 会强制删除,不会提醒。...3:移动目录 1:创建目录 mkdir /usr/local/lib/node 如果目录已经存在,则无需创建,也可以根据自己的喜好设置目录名称 2:移动目录并重命名 mv node-v14.17.4-linux-x64
准备工具 1.微pe引导及其主要文件 链接:https://pan.baidu.com/s/1e-9zLoEkGLzMuNQ8pqQhpA 提取码:m0hl 2.linux分区软件 实例:gparted...他不支持uefi,并且步骤繁琐 提取微pe的引导文件 直接制作一个可启动分区,把微pe的文件放入就行了。...引用微pe官方的txt(从官方txt中获得的方法233) 感谢您安装了微PE工具箱,本目录包含了微PE的主要启动文件和内核镜像。...这些文件都是隐藏的,删除这些文件或格式化U盘即可删除PE。方法三安装到隐藏分区,在U盘根目录不会出现任何文件,若需要删除方法三安装的PE,只需用方法一二四五重新制作一次PE后手动格式化即可。...WALLPAPER.JPG - 若存在则为自定义PE桌面壁纸文件。 WEPE.INI - 外置程序的配置文件,可以对PE桌面、开始菜单等进行配置。
alloc 看一下帮助文档: ? alloc.jpeg 返回这个接受消息的类的一个实例....结论: alloc 后只是在系统中分配了内存,这段内存空间的大小与这个类本身结构所占字节的大小相等,并返回了这段内存的指针. alloc 将申请内存空间中的值都设置为 0. alloc 调用了方法 allocWithZone...:. alloc 就执行了一次,没有继承的关系. init 看一下帮助文档: ?...alloc (或者是 allocWithZone:) 消息在一行内执行: TheClass *newObject = [[TheClass alloc] init]; An object isn’t...这个方法可以当做alloc和init的组合。首先alloc初始化了一个class结构体对象的指针,然后调用init方法完成初始化过程。 结论: new 可以看做是alloc与init的组合.
/linux/gfp.h?...v=4.7, line 476 alloc_page(mask) 是前者在order = 0情况下的简化形式,只分配一页 include/linux/gfp.h?.../include/linux/gfp.h?..., order) #endif UMA结构下的alloc_pages是通过alloc_pages_node函数实现的, 下面我们看看alloc_pages_node函数的定义, 在include/linux...函数进行了内存分配 __alloc_pages_node函数定义在include/linux/gfp.h?
Linux 内核源码的 linux-4.12\mm\memblock.c#1242 位置 ; phys_addr_t __init memblock_alloc(phys_addr_t size, phys_addr_t...align) { return memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ACCESSIBLE); } 源码路径 : linux-4.12\mm...\n", &size, &max_addr); return alloc; } 源码路径 : linux-4.12\mm\memblock.c#1230 三、__memblock_alloc_base..., max_addr, NUMA_NO_NODE, MEMBLOCK_NONE); } 源码路径 : linux-4.12\mm\memblock.c#1223 四、memblock_alloc_base_nid...(size, align, 0, max_addr, nid, flags); } 源码路径 : linux-4.12\mm\memblock.c#1200 五、memblock_alloc_range_nid
文章目录 一、__alloc_pages_nodemask 函数参数分析 二、 __alloc_pages_nodemask 函数分配物理页流程 一、__alloc_pages_nodemask 函数参数分析...---- __alloc_pages_nodemask 函数 定义在 Linux 内核源码的 linux-4.12\mm\page_alloc.c#4003 位置 , 函数原型如下 : ① gfp_t..., 如果没有要求 , 可以设置为 NULL ; /* * This is the 'heart' of the zoned buddy allocator. */ struct page * __alloc_pages_nodemask...(gfp_t gfp_mask, unsigned int order, struct zonelist *zonelist, nodemask_t *nodemask) 源码路径 : linux...-4.12\mm\page_alloc.c#4003 二、 __alloc_pages_nodemask 函数分配物理页流程 ---- __alloc_pages_nodemask 函数分配物理页流程
这篇文章将介绍基础知识,详细讲解PE文件格式,熟悉各种PE编辑查看工具,针对目标EXE程序新增对话框等,这也为后续PE病毒和恶意代码的攻防打下扎实基础。...(参考文献见后) 一.PE文件基础 什么是PE文件?...PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节表、节等。 本文的第二部分我们将对PE文件格式进行详细解析。...五.总结 文章写到这里,就介绍完毕,本文主要讲解PE文件解析、PE编辑工具使用和PE结构修改,属于系统安全和PE逆向相关知识,希望对您有所帮助。...内容包括: PE文件基础 PE文件格式解析 – 010Editor解析PE文件 – Ollydbg动态调试程序 – 仅弹出第二个窗口 熟悉并分析PE文件的引出表 – PEView和Stud_PE查看文件
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术。...该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行后挂入后台并继续运行原始程序,实现了一种隐蔽的Shell访问。而我把这种技术叫做字节注入反弹。...我们以如下截图中的30352为例; 接着读者需要自行准备一段ShellCode代码,只保留代码部分去掉头部变量参数,如下所示; 接着我们使用如下这段代码中的WritePEShellCode函数,通过传入指定PE...// 将ShellCode写出到PE程序的特定位置 // 参数1: 指定PE路径 参数2: 指定文件中的偏移(十进制) 参数3: 指定ShellCode文件 void WritePEShellCode(...文件中我们需要手动分析寻找空余块,并在注入成功后还需要自行修正PE文件内的入口地址等,这种方式适合于对PE结构非常熟悉的人可以,但也要花费一些精力去寻找分析,如下代码则是实现了自动化注入功能,该代码中FindSpace
PE知识复习之PE合并节 一丶简介 根据上一讲.我们为PE新增了一个节. 并且属性了各个成员中的相互配合....以前我们讲过PE扩大一个节怎么做. 合并节跟扩大节类似. 只不过一个是扩大. 一个是合并了....合并节的步骤. 1.修改文件头节表个数 2.修改节表中的属性 节.sIzeofRawData 节数据对齐后的大小. 3.修改扩展头中PE镜像大小 SizeofImage 4.被合并的节以...最后一个节表以0填充即可. 3.修改扩展头的PE镜像大小. SizeofImage ? 我们上一讲新增了一个节.所以映像大小为0x1E000.
接上一篇文章 linux内核启动流程分析 - efistub的入口函数,我们继续看efi_pe_entry这个函数。 ?...继续看efi_pe_entry函数。...继续efi_pe_entry函数。...至此,efi_pe_entry函数就结束了。 如果熟读过uefi specification,该函数的大部分逻辑理解起来都非常简单,所以很多细节我就不再赘述了。...既然build.c只是将setup和compressed部分顺序拼接,并没有做地址的转换处理,那理应efi_pe_entry函数里使用的startup_32函数的地址就是0。
1.为什么要用alloc?...我们在oc开发当中经常使用alloc来为对象申请开辟内存空间例如 School *s1 = [School alloc] 2.alloc 的流程 在苹果开源的源码文件NSObject.mm中可以轻易找到...alloc的流程。...如下 objetc_alloc->alloc->_objc_rootAlloc->callAlloc->_objc_rootAllocWithZone->_class_createInstanceFromZone...,我们alloc的时候首先需要知道实例化对象的类 需要多少/多大的内存空间。
PE知识复习之PE的导入表 一丶简介 上一讲讲解了导出表. 也就是一个PE文件给别人使用的时候.导出的函数 函数的地址 函数名称 序号 等等. ...一个进程是一组PE文件构成的. PE文件需要依赖那些模块.以及依赖这些模块中的那些函数.这个就是导入表需要做的. 确定PE依赖那个模块. 确定PE依赖的那个函数. 以及确定函数地址....PE加载前加载后的区别. 一样是一样的.但是需要分清 PE加载前.还有PE加载后.如果加载前,那么IAT跟INT一样.都可以找到依赖的函数名称....PE加载后如下图: ? IAT表保存的就是函数地址了. 从导入表中找到IAT表. ? IAT表的RVA 偏移为 0x1A098 VA == 41A098 ?...PE加载后INT 表同上. IAT表变成了存储函数地址的地址表了. 2. Name 民称表. 直接指向DLL名称文件名.
0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 找到PE...0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 定位PE
PE文件就是我们常说的EXE可执行文件,针对文件特征的识别可以清晰的知道该程序是使用何种编程语言实现的,前提是要有特征库,PE特征识别有多种形式,第一种是静态识别,此方法就是只针对磁盘中文件的特征码字段进行检测来判断编译器版本...打开PE文件映射: 在读取PE结构之前,首先要做的就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping(...include #include #include #pragma comment(lib,"Imagehlp.lib") // 读取PE...结构,然后判断其是否符合PE文件规范即可,这里需要注意32位于64位PE结构所使用的的结构定义略有不同,代码中已经对其进行了区分....(lpMapAddress, 0); printf("是否为PE文件: %d \n", ret); system("pause"); return 0; } 判断PE文件特征码: 判断程序使用了何种编译器编写
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密...,病毒分析,外挂技术等,在PE文件中我们最需要关注,PE结构,导入表,导出表,重定位表,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据....Windows NT 系统中可执行文件使用微软设计的新的文件格式,也就是至今还在使用的PE格式,PE文件的基本结构如下图所示: 在PE文件中,代码,已初始化的数据,资源和重定位信息等数据被按照属性分类放到不同的...我们需要编程实现读取PE结构,在读取PE文件中的数据的前提下,我们先来打开文件,然后才能读取。...PE文件头开始偏移为00f8h的位置。
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密...,病毒分析,外挂技术等,在PE文件中我们最需要关注,PE结构,导入表,导出表,重定位表,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据....Windows NT 系统中可执行文件使用微软设计的新的文件格式,也就是至今还在使用的PE格式,PE文件的基本结构如下图所示:图片在PE文件中,代码,已初始化的数据,资源和重定位信息等数据被按照属性分类放到不同的...,上面介绍的是真正的PE文件,为了兼容以前的DOS系统,所以保留了DOS的文件格式,接下来将依次介绍这几种数据结构.我们需要编程实现读取PE结构,在读取PE文件中的数据的前提下,我们先来打开文件,然后才能读取...PE文件头开始偏移为00f8h的位置。
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术。...该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行后挂入后台并继续运行原始程序,实现了一种隐蔽的Shell访问。而我把这种技术叫做字节注入反弹。...我们以如下截图中的30352为例;图片接着读者需要自行准备一段ShellCode代码,只保留代码部分去掉头部变量参数,如下所示;图片接着我们使用如下这段代码中的WritePEShellCode函数,通过传入指定PE...// 将ShellCode写出到PE程序的特定位置// 参数1: 指定PE路径 参数2: 指定文件中的偏移(十进制) 参数3: 指定ShellCode文件void WritePEShellCode(const...文件中我们需要手动分析寻找空余块,并在注入成功后还需要自行修正PE文件内的入口地址等,这种方式适合于对PE结构非常熟悉的人可以,但也要花费一些精力去寻找分析,如下代码则是实现了自动化注入功能,该代码中FindSpace
PE知识复习之PE扩大节 一丶为什么扩大节 上面我们讲了,空白区添加我们的代码.但是有的时候.我们的空白区不够了怎么办.所以需要进行扩大节. ...并且在PE文件中添加0数据进行填充即可....Characteristics; //节的属性 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; 二丶扩大节实战以及注意问题 PE...还要修改扩展头中的 SizeofImage(内存PE镜像大小) 三丶扩大节实战 1.添加数据 随便找一个PE文件.在最后文件偏移处添加数据....但是注意,修改之后并不能直接查看.因为PE没法运行.我们必须修改扩展头中的sizeofImage属性.这样我们的内存镜像大小才是真正的大小.
PE知识复习之PE新增节 一丶为什么新增节.以及新增节的步骤 例如前几讲.我们的PE文件在空白区可以添加代码.但是这样是由一个弊端的.因为你的空白区节属性可能是只读的不能执行...我们新增的节.自己需要在PE文件添加一段节数据.数据的大小按照文件对齐添加. 并且填写到这个成员中. 6.修改扩展头的PE镜像大小. sizeofImage....这个成员才是关键.如果不按照内存对齐修改镜像大小.那么我们的节就不会映射到内存中.或者PE文件根本无法执行....二丶根据新增节步骤.实战手工添加一个节. 1.添加一个节表 添加节表的时候.需要在最后一个节后面添加.随便哪一个PE文件举例 ? ...跳转过去之后发现就是我们刚才填写FFFF的数据.已经成功映射了.至此我们就为这个PE文件新增了一个节.
领取专属 10元无门槛券
手把手带您无忧上云