namespace X.Reflection { using System; using System.IO; public static partial class ReflectionX { public static PeType GetPeType(this string filepath) { using (var fs = File.OpenRead(filepath)) using (var br = new BinaryReader(fs)) { try { if (IMAGE_…
作者:MSDN译者:李马 预定义段 一个Windows NT的应用程序典型地拥有9个预定义段,它们是.text..bss..rdata..data..rsrc..edata..idata..pdata和.debug.一些应用程序不需要所有的这些段,同样还有一些应用程序为了自己特殊的需要而定义了更多的段.这种做法与MS-DOS和Windows 3.1中的代码段和数据段相似.事实上,应用程序定义一个独特的段的方法是使用标准编译器来指示对代码段和数据段的命名,或者使用名称段编译器选项-NT——就和Wi…
前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问题在于,为何调用两次readline?文本文件a.txt里我们已知有两行文本,所以我们用两次readline把a.txt文本里的内容全部读取出来了,实际上通常程序是不知道某个文件里有多少行数据的,那怎样编写一个通用的程序无论文件里有多少行我们都可以通过程序把它全部读出来呢?这里需要将文件的读写和循环…
关于读文件的时候判断文本是否读完的方式一般可以通过EOF,一般宏定义为-1.因为ASCII码中不可能出现-1. 当以文本形式读取文件内容, 读入的字符值等于EOF时, 表示读入的已不是正常的字符而是文件结束符 当以二进制形式读取文件内容, 信息都是以数值方式存在的, EOF的值可能就是所要处理的二进制文件中的信息, 此时需要用 feof() 来判断是否到达了文件结尾 即EOF可以作为文本文件的结束标志, 但不能作为二进制文件的结束符, feof函数既可以判断二进制文件, 又可以判断文本文件…
PE是Portable Executable File Format(可移植的运行体)简写,它是眼下Windows平台上的主流可运行文件格式. PE文件里包括的内容非常多,详细我就不在这解释了,有兴趣的能够參看之后列出的參考资料及其它相关内容. 近期我也在学习PE文件格式,參考了很多资料.用C++封装了一个高效方便的PE文件格式解析的类. 该类对想学PE文件结构的朋友可算一份可贵的资料.代码均非常易懂,考虑较全面,具有一定的通用性. 同一时候该类也能够让想创建自己的PE文件解析软件的朋能够轻松在…
python读文件判断是否已到EOF,也即结尾,一般其它语言都是以EOF直接来判断的,比如 if ( fp.read(chunk_size) == EOF), 但python到结尾后是返回空字符串的,所以python可以这样判断: fp = open('path/to/file', 'r', encoding='utf-8') str = '' try: while True: s = fp.read(10) if s == '': break str += s finally: fp.clos…
PE文件格式 PE 文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的节中. 一个典型的 PE 文件中包含的节如下: .text 存放着二进制的机器代码 .data 初始化的数据块,如宏定义.全局变量.静态变量等. .idata 可执行文件所使用的动态链接库等外来函数与文件的信息. .rsrc 存放程序的资源,如图标.菜单等. 除此以外,还可能出现的节包括".reloc".".edata".".tls"."…
深入理解 Win32 PE 文件格式 Matt Pietrek 这篇文章假定你熟悉C++和Win32. 概述 理解可移植可执行文件格式(PE)可以更好地了解操作系统.如果你知道DLL和EXE中都有些什么东西,那么你就是一个知识渊博的程序员.这一系列文章的第一部分,讨论最近这几年PE格式所发生的变化. 这次更新后,作者讨论了PE格式如何适应于用.NET开发的应用程序,包括PE节,RVA,数据目录,以及导入函数.附录中包含了相关的映像头结构以及它们的描述. 很早以前,我为微软系统期刊(现在叫做MSD…
PE文件格式分析 PE 的意思是 Portable Executable(可移植的执行体).它是 Win32环境自身所带的执行文件格式.它的一些特性继承自Unix的Coff(common object file format)文件格式.“Portable Executable”(可移植的执行体)意味着此文件格式是跨Win32平台的;即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式. PE文件在文件系统中,与存贮在磁盘上的其它文件一样,都是二进…
这篇文章假定你熟悉C++和Win32. 概述 理解可移植可执行文件格式(PE)可以更好地了解操作系统.如果你知道DLL和EXE中都有些什么东西,那么你就是一个知识渊博的程序员.这一系列文章的第一部分,讨论最近这几年PE格式所发生的变化. 这次更新后,作者讨论了PE格式如何适应于用.NET开发的应用程序,包括PE节,RVA,数据目录,以及导入函数.附录中包含了相关的映像头结构以及它们的描述. 很早以前,我为微软系统期刊(现在叫做MSDN)写了一篇文章.那篇文章“Peering Inside the…