接上一篇的win32下PE文件分析之NT头(一).FileBuffer与ImageBuffer(1).FileBuffer是将文件原原本本的读入申请的内存区域中,那部分区域就是FileBuffer,里面的内容与磁盘中的文件一模一样.如下图:
(2).ImageBuffer是按照一定规则加载到内存中的某个区域,并且通过一定的处理,能立刻执行的区域,那部分区域叫做ImageBuffer.其大小就是可选PE头中的SizeOfImage.结构如下图:(3).二者之间的关系:
ImageBuffer是按照文件FileBuffer中给定的条件,按照一定的规定加载到ImageBuffer.如果内存对齐与文件对齐大小一样,则ImageBuffer几乎是FileBuffer的一份完整拷贝(图中部分是节表中的Misc).
(二).节表:从上面的图中,可以看到节表的位置就挨着可选PE头的,所以只要从FileBuffer的起始位置加上几个头的大小,就是节表的位置.一个PE文件中,节表的数量可能不一样.各个节表是紧挨着的.以下是Visual C++ 6免费云主机域名.0中winnt.h中定义的节表结构:
(三).遍历节表:通过循环遍历notepad.exe中的节表,节的数量为标准PE头中NumberOfSections的值,代码如下:section.h:注释掉解析其他头的函数,运行结果如下图:
(四).说明:上面的代码中只输出了部分信息,主要是一些比较有用的信息.
节表中最后一个成员的值Characteristics,决定了这个节的权限.下图是其属性的对照表:有空会继续更新.有任何建议请留评论.
c语言中有关于在函数返回值的问题,在函数中的局部变量主要是在栈上开辟的,出了函数变量就被回收了,针对函数返回值得问题,给出下面几个比较具体的例子来说明:函数返回值是在函数中定义的局部变量这类型的返回值在主函数中是可以使用的,因为返回局部变量值得时候,返回的是值…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。