use*_*815 10 .net obfuscation serialization binaryformatter
我有一个二进制文件,我想混淆和分发给用户.让我们假设我使用我的二进制文件的未经模糊处理的版本来使用现成的.NET二进制格式化程序来序列化数据.那么我们可以用混淆的二进制文件对数据进行语义化吗?
我想发布混淆的二进制文件和序列化数据.如果上述问题的答案是肯定的,我可以在用户之间共享序列化数据.否则,我将不得不向每个用户提供单独的序列化数据.
Jas*_*ley 11
混淆的二进制数据和序列化数据之间似乎存在混淆.如果使用默认序列化程序对类进行序列化,则类名和属性/字段值将用作该序列化数据中的字符串 - 因此,如果您对二进制文件进行模糊处理,则使用该二进制文件的序列化数据将具有模糊名称和非如果您执行以下任何操作,模糊二进制文件将无法读取由模糊二进制文件创建的序列化数据:
以下是一些解决此问题的方法:
我暂时没有使用它,(所以你要验证它是否适合你的情况)但是如果你使用的是二进制格式化程序,那么你可以通过提供处理它的构造函数来控制数据在序列化文件中的存储方式SerializationInfo和StreamingContext.如果您在google周围寻找样本,您应该找到一个(这是我发现的一个:将对象序列化为文件).你可能找不到很多关于使用这种方法的新文章,因为大多数人都觉得它不是很有趣,但它确实是指定你的类如何自我保存并使用二进制格式化器重新填充自身的最简单方法.
在你必须实现的构造函数中,你使用键/值对的字符串来序列化 - 在混淆中这些字符串可能会被加密(这是正常的),属性设置语句将被重命名并与你的混淆类保持同步/成员名称 - 因此它应该适用于混淆和非混淆的程序集.
另一种选择是从混淆中排除您正在序列化的类,只是加密数据文件.
看错问题了。当二进制文件被混淆时,当类名/命名空间发生更改等时,您需要小心。这不仅会在混淆/非混淆的二进制文件之间中断,而且通常也会在不同版本之间中断。
该产品显然不包括标记为:http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm的类(这不是推荐,我从未使用过 - 您必须对其进行测试并查看成本是否是值得的)。
除此之外,您可以根据要序列化的数据量编写自定义序列化器。
[原答案]
你为什么要混淆数据?我只能想象这是为了阻止某人编辑它或阻止某人阅读内容。
如果是为了防止某人编辑它,那么我可以建议您包含数据的哈希值,然后不要费心去混淆它。
如果是为了防止有人阅读它,那么我建议您在数据序列化后对其进行加密。
两者都有很多例子,但如果您想要一个例子,请告诉我。
归档时间: |
|
查看次数: |
2633 次 |
最近记录: |