类型声明在编译后的执行代码还有表达吗?如何表达?(100分)

  • 主题发起人 主题发起人 张鸿林
  • 开始时间 开始时间

张鸿林

Unregistered / Unconfirmed
GUEST, unregistred user!
定义一个类型如
type
TARecord=record;
field1:array[0..10] of char;
field2:longint;
end;

var aRecord:TRecord;

为了保证声明不被编译程序优化掉,aRecord在程序中以被使用,这样的类型声明部分在
执行代码中还有记载吗?如果有,如何表达?
认真研究过执行文件,一头雾水,没有学习过编译原理,请教高手指导。
 
引申出来的一般化问题:
interface 部分只是被编译器使用还是同时还被执行代码使用?
我知道Com规范的接口定义部分被编译到二进制代码。
本问题的用处:
对于一个没有文件头描述的记录类型文件,我想从它的执行文件中找到文件
结构描述。
 
record 恐怕没有,至少我没有找到:(

 
像这种非对象的定义信息编译器是不会保留下来的。如果record不是非常复杂的话(少于
8个域)我建议用16进制编辑器进行手工分析(我的主页上有一个自制工具,专门用来黑文件
的 ^_^)。
 
creation-zy 兄主页在?……

 
http://www24.brinkster.com/creationzy/
FileTool
用法:进入“目录工具”,通过目录列表选择要分析的文件,在文件列表框点击右键,选择
“技术分析”中的“波形分析”即可查看文件中的ASCII分布情况(请注意弹出菜单的功能,
还有“读取单位”——有了它,分析就简单多了)。还有“复制专家”,可以将文件中的指
定区域按照一定的规则提取出来。在“工具”页中,还有类型转换器,可以很方便的进行进制
转换等操作。

唉!至少到目前为止,这个工具只有我才能熟练使用。如果文件不大的话,张鸿林兄可以把
它发到我的信箱(见我的主页)中,让我试一试。
 
creation-zy 兄,在你家找到不少好东西喔:)

 
谢谢Creation_zy,分析这个文件需要许多时间,不便麻烦您。
有三十几个字段,且许多记录是空的(需要更多的记录来分析),另外,字符字段用pchar定义,
使字段后的空余空间留下许多无用字符,增加了分析难度。
事实上我已基本分析出文件结构,只是文件版本经常改变,我想
制作一个一劳永逸的工具解决问题。

我非常欣赏您的作品,以后用得着。
如果您还对这个文件感兴趣,可以发给您(包括我的研究工具)
 
后退
顶部