首页 > 其他分享 >P47扩大节-合并节-数据目录

P47扩大节-合并节-数据目录

时间:2023-05-08 18:14:07浏览次数:26  
标签:合并 SizeOfImage DIRECTORY SizeOfRawData 内存 PE P47 目录 VirtualSize

合并节:
法一:sizeofimage-第一个节RVA
法二:最后一个节RVA-在内存中对齐后的头

扩大节:
1、拉伸到内存
2、分配一块新的空间:SizeOfImage + Ex
3、将最后一个节的SizeOfRawData和VirtualSize改成N
SizeOfRawData = VirtualSize = N
N = (SizeOfRawData或者VirtualSize 内存对齐后的值) + Ex
4、修改SizeOfImage大小
SizeOfImage = SizeOfImage + Ex

合并节:

1、拉伸到内存
2、将第一个节的内存大小、文件大小改成一样
Max = SizeOfRawData>VirtualSize?SizeOfRawData:VirtualSize
SizeOfRawData = VirtualSize = 最后一个节的VirtualAddress + Max - SizeOfHeaders内存对齐后的大小
3、将第一个节的属性改为包含所有节的属性
4、修改节的数量为1

数据目录:

1、我们所了解的PE分为头和节,在每个节中,都包含了我们写的一些代码和数据,但还有一些非常重要
的信息是编译器替我们加到PE文件中的,这些信息可能存在在任何可以利用的地方。

2、这些信息之所以重要,是因为这些信息包含了诸如:
PE程序的图标在哪里?
用到了哪些系统提供的函数?
为其他的程序提供哪些函数?

3、编译器添加了这么多信息,那程序是如何找到这些信息的呢?
答案就是:数据目录

4、数据目录定位:

可选PE头最后一个成员,就是数据目录.一共有16个:

typedef struct _IMAGE_DATA_DIRECTORY {
DWORD VirtualAddress; //内存偏移
DWORD Size; //大小
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;

#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16

  

分别是:导出表、导入表、资源表、异常信息表、安全证书表、重定位表、调试信息表、版权所以表、全局指针表
TLS表、加载配置表、绑定导入表、IAT表、延迟导入表、COM信息表 最后一个保留未使用。
和程序运行时息息相关的表有:
导出表
导入表
重定位表
IAT表

标签:合并,SizeOfImage,DIRECTORY,SizeOfRawData,内存,PE,P47,目录,VirtualSize
From: https://www.cnblogs.com/cspecialr/p/17382570.html

相关文章

  • pycharm的目录标记
    如图:源代码根目录:包含项目的主要源代码,它会在这个目录下搜索代码,然后自动补全和只能提示都通过这里的代码提供已排除:就是不索引这个文件夹,一般用来存放数据、日志等非代码文件,用来提高性能测试源代码根目录:就是包含项目的测试代码,pycharm会在这里搜索测试用例,可以单独运......
  • 【debug】常见的问题,怎么引用上一层目录
    根据代码执行方式的不同,有两种解决方法。在vscode中执行代码,需要设置一下env参数{//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","c......
  • AI互联网监管视频平台EasyCVR出现重复的GB设备目录是什么原因?如何解决?
    EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。有用户反馈,在使用EasyCVR时,GB设备的目录出现了重复的现象......
  • linux系统根目录下常见目录作用
    在Linux下一切皆文件,所有的文件都挂载在一个根文件上。一般有bin、boot、dev等目录。1.根文件内核启动后挂载的第一个文件系统2.bin存放系统的二进制命令(cd、ls、rm、mv)3.bootLinux内核和引导程序所需的目录4.lib/lib32/ilb64程序运行必要的链接库5.ect系统管理和维护方面的......
  • VsCode设置插件安装目录
    VsCode设置插件安装目录如果是还没有安装插件,希望把新的插件安装到新目录,可以使用【命令行/快捷方式/资源管理器右键】的方式来打开vscode如果之前已经安装过插件,可以把C:\Users\xxxx\.vscode下的extensions目录拷贝到插件需要安装的路径下,再进行下面的操作命令行方式可以......
  • 合并去重脚本
    importsys#f1=""#f2=""#f3=""##打印命令行参数#iflen(sys.argv)>4:#f1=sys.argv[1]#f2=sys.argv[2]#f3=sys.argv[3]unique_lines=set()withopen('/tmp/jitang.txt','r'......
  • 软件开发目录规范
    软件开发目录规范为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下CopyFoo/|--core/||--core.py||--api/||--api.py||--db......
  • linux 中查看各个子目录占用磁盘的大小
     001、[root@PC1test]#lsdir1dir2dir3[root@PC1test]#du-h##查看所有子目录占用磁盘的大小100M./dir1300M./dir230M./dir3430M. ......
  • 如何从develop分支拉取代码,开发页面和合并提交
    我以04官网为例子,在我开发页面的时候,第一步是先切到生产分支,然后不要用vscode自带的操作,改用gitpull拉取最新代码,,此时生产的页面是这样的  我再从develop拉出一个测试分支Jenkins,以及预发布分支release,此时我的需求是这个"开发分支"改成"本地分支",页面文字统一改......
  • 第10章:10W QPS真刀实操__以及基于ZK+Netty手写分布式测试工具 177手机路人甲账号 主目
    10WQPS真刀实操__以及基于ZK+Netty手写分布式测试工具参考链接系统架构知识图谱(一张价值10w的系统架构知识图谱)https://www.processon.com/view/link/60fb9421637689719d246739秒杀系统的架构https://www.processon.com/view/link/61148c2b1e08536191d8f92f10WQPS真刀实......