gpt4 book ai didi

c# - 使用 mida 保护时反序列化失败

转载 作者:行者123 更新时间:2023-11-30 15:37:23 25 4
gpt4 key购买 nike

正如标题所说,在使用 themida 保护我的应用程序后反序列化失败,但出现以下异常:

Unable to generate a temporary class (result=1). error CS0009: Metadata file 'c:\Path\to\protected.exe' could not be opened -- 'An attempt was made to load a program with an incorrect format. '

这是我用于反序列化的代码(它在 exe 未 protected 时有效):

MyClass myClass;
try
{
using (var stream = new MemoryStream(Data))
{
var serializer = new XmlSerializer(typeof(ComSec.MyClass));
myClass = serializer.Deserialize(stream) as MyClass;
}
}
catch (Exception e)
{
return null;
}

奇怪的是,代码 + themida 保护在我的机器上运行良好,但在 VM 和同事的机器上却失败了

我正在使用(与我的同事相同的配置):

  • VS2012 专业
  • Windows 7 x64 旗舰版
  • Themida 2.1.2.0 x86(支持 .Net)

VM 是全新安装的 Windows 7 x86。

最佳答案

我最终使用了 DataContract 属性并使用 DataContractSerializer 来序列化和反序列化对象(它现在可以在任何地方使用,无论是否有保护)。

我的研究:

[DataContract(Name = "TestClass")]
public class TestClass
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Age")]
public int Age { get; set; }
}

序列化/反序列化:

var serializer = new DataContractSerializer(typeof(TestClass));

using (var stream = new MemoryStream())
{
serializer.WriteObject(stream, this);
File.WriteAllBytes("TestClass.xml", stream.ToArray());
}

TestClass o = null;
using (var stream = new MemoryStream(File.ReadAllBytes("TestClass.xml")))
{
o = serializer.ReadObject(stream) as TestClass;
}

关于c# - 使用 mida 保护时反序列化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com