【发布时间】:2013-08-16 19:18:27
【问题描述】:
一周前,我遇到了一种情况,我必须读取由其他人制作的另一个应用程序制作的二进制序列化对象。 我只有 someSerializedData.bin 文件,所以我尝试手动重新创建未知对象的类定义,并且我能够这样做,因为序列化文件中的元数据。 奇怪的是,我在 google 上找不到任何工具。
Q1:为什么没有工具可以从二进制序列化文件/数据重新创建类定义?
这就引出了我的第二个问题
Q2:是否存在无法从序列化数据中恢复类定义的情况? (假设它没有以任何方式加密或混淆,我对涉及“默认”.NET Binaryserializer 属性的情况感兴趣,以禁用包含的类型信息和元数据)
【问题讨论】:
-
请不要只投反对票,告诉我哪里出了问题,以便我改进问题。
-
我认为您正在寻找的东西称为反射(获取机器代码并将其反转回 C#)对吗?
-
您有制作 .bin 文件的应用程序的副本吗?如果是这样,您可以对其进行反编译并查看代码。见dotPeak:jetbrains.com/decompiler
-
也许这个链接可以帮助你。 msdn.microsoft.com/en-us/library/cc236844.aspx
-
二进制序列化通常由实现 ISerializable 的类自定义。例如,有很多 .NET 类。您无法从二进制数据中恢复。
标签: c# class metadata definition binary-serialization