2010-08-05 87 views
0

如果您在System._StartExe中放置断点并检查传入的InitTable,您会注意到InitTable.UnitCount大于InitTable.TypeInfo.UnitCount。不幸的是,这些记录都没有记录得很好。有人知道这两个数字代表什么以及它们为什么不同?我假设InitTable.UnitCount是应用程序中的总单元数。但另一个是什么?为什么UnitCount在PackageInfoTable和TPackageTypeInfo之间有所不同?

+0

UnitCount告诉伴随的UnitInfo表中有多少条目。我认为TypeInfo.UnitCount对应于类似的东西。你能比较这两张表来看看他们的内容有何不同? – 2010-08-05 22:08:35

+0

@Rob:不是。这两个表格显示了关于它们各自单位的不同数据组,没有重叠,尽我所知。第一个表格甚至没有包含单元名称,这让我想知道DeDede这样的程序是从D2010之前编译的EXE中提取它们的。 – 2010-08-05 22:23:09

回答

3

相信
- PackageInfoTable.UnitCount计数存储在UnitInfo阵列,其中每个记录保持用于该包装的单位份initalization和终止代码指针在单位。
- PackageInfoTable.TypeInfo.UnitCount以及...... UnitNames引用了存储在TypeTable(真实类型信息或单位边界标记)中的包含某些TypeInfo的单元。

,一个单元都包含一些初始化/ FINIT代码,但没有所属类别收集和相互的,因此区别...

仅供参考,看看MemCheck.pasprocedure ChangeFinalizationsOrder,看看他们是如何破解InitTable(最多D2006) ...

相关问题