打信号写到窗体里(50分)

  • 主题发起人 主题发起人 LUJIAYU110
  • 开始时间 开始时间
L

LUJIAYU110

Unregistered / Unconfirmed
GUEST, unregistred user!
比如LABEL标签,我想在程序运行时,动态设置其值,下次启动时记忆,不用注册表、文件等中转存取,直接写到窗体(程序)中,不能影响程序正常运行。
 
这个想法蛮好i
 
错别字:把信息写到窗体里。
 
能实现就好了,不过据了解如果不重新编译程序.是很难实现的.要不就要把信息存储进文件等里面,下次调用出来.
 
首先不怀疑这个想法的必要性。只从技术上看怎么解决这个问题。
1、必须了解PE 文件结构:
PE文件结构(EXE)

在windows 9x、NT、2000下,所有的可执行文件都是基于Microsoft设计的一种新的文件格式Portable Executable File Format(可移植的执行体),即PE格式。有一些时候,我们需要对这些可执行文件进行修改,下面文字试图详细的描述PE文件的格式及对PE格式文件的修改。
1、PE文件框架构成
DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n
上表是PE文件结构的总体层次分布。所有 PE文件(甚至32位的 DLLs) 必须以一个简单的 DOS MZ header 开始,在偏移0处有DOS下可执行文件的“MZ标志”,有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随 MZ header 之后的 DOS stub。DOS stub实际上是个有效的EXE,在不支持 PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 " This program cannot run in DOS mode " 或者程序员可根据自己的意图实现完整的 DOS代码。通常DOS stub由汇编器/编译器自动生成,对我们的用处不是很大,它简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"。
紧接着 DOS stub 的是 PE header。 PE header 是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。可执行文件在支持PE文件结构的操作系统中执行时,PE装载器将从 DOS MZ header的偏移3CH处找到 PE header 的起始偏移量。因而跳过了 DOS stub 直接定位到真正的文件头 PE header。
PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如“.text”节等,那么,每一节的内容都是什么呢?实际上PE格式的文件把具有相同属性的内容放入同一个节中,而不必关心类似“.text”、“.data”的命名,其命名只是为了便于识别,所有,我们如果对PE格式的文件进行修改,理论上讲可以写入任何一个节内,并调整此节的属性就可以了。
PE header 接下来的数组结构 section table(节表)。 每个结构包含对应节的属性、文件偏移量、虚拟偏移量等。如果PE文件里有5个节,那么此结构数组内就有5个成员。
以上就是PE文件格式的物理分布,下面将总结一下装载一PE文件的主要步骤:
1、 PE文件被执行,PE装载器检查 DOS MZ header 里的 PE header 偏移量。如果找到,则跳转到 PE header。
2、PE装载器检查 PE header 的有效性。如果有效,就跳转到PE header的尾部。
3、紧跟 PE header 的是节表。PE装载器读取其中的节信息,并采用文件映射方法将这些节映射到内存,同时付上节表里指定的节属性。
4、PE文件映射入内存后,PE装载器将处理PE文件中类似 import table(引入表)逻辑部分。
上述步骤是一些前辈分析的结果简述。

2、做一个字符串资源,打包到EXE里边。
3、设置保存的时候,首先打开本身,然后将新串写到对应的位置,同时修改表示长度的字节位(只是思路)。
 
这里有两篇: 你可以看看
PE文件格式详解(上):http://www.vckbase.com/document/viewdoc/?id=1334
PE文件格式详解(下):http://www.vckbase.com/document/viewdoc/?id=1335
 

Similar threads

后退
顶部