我有一个我想混淆的二进制文件并分发给用户。让我们假设我使用了我的二进制文件的未混淆版本来使用现成的.NET二进制格式化程序对数据进行序列化。然后我们可以使用混淆后的二进制反序列化数据吗?
我想分发混淆的二进制文件以及序列化数据。如果以上问题的答案是肯定的,那么我可以在用户之间共享序列化的数据。否则,我将不得不向每个用户提供单独的序列化数据。
最佳答案
混淆后的二进制数据和序列化数据之间似乎有些混淆。如果您使用默认的序列化程序序列化您的类,则在该序列化的数据中将类名和属性/字段值用作字符串-因此,如果混淆了二进制文件,则使用该二进制文件的序列化数据将具有混淆的名称,而您的非如果执行以下任何操作,则混淆的二进制文件将无法读取由混淆的二进制文件创建的序列化数据:
以下是一些解决此问题的方法:
在必须实现的构造函数中,将字符串用于键/值对以进行序列化-混淆时,这些字符串可能会被加密(确定),并且属性设置语句将被重命名并与混淆后的类保持同步/成员名称-因此它既适用于混淆的程序集,也适用于非混淆的程序集。
关于.net - .NET中的序列化和混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7679187/