我是.Net Remoting的问题:
我们有两个应用程序,一个客户端和一个服务器。客户端可以连接到服务器并通过.Net Remoting检索配置。
我们有一个允许将我们的软件部署到客户端的设置。这个设置模糊了我们所有的代码,但我们有一个排除列表(通过命名空间和DLL),它排除了用于传输数据的所有类。
最近出现了几个月以来,我们在配置中有一个序列化的类,这是错误的。我们看到了,因为我们无法再从调试客户端连接到发布(设置)服务器。
现在的问题是:我们怎样才能找到这个课程。
例外情况如下:
System.Runtime.Serialization.SerializationException occurred
HResult=-2146233076
Message=Cannot get the member '<.ctor>b__5'.
Source=mscorlib
StackTrace:
Server stack trace:
at System.Reflection.MemberInfoSerializationHolder.GetRealObject(StreamingContext context)
at System.Runtime.Serialization.ObjectManager.ResolveObjectReference(ObjectHolder holder)
at System.Runtime.Serialization.ObjectManager.DoFixups()
我们试着用deobfuscator看到它是什么成员,但看起来这个例外还不够完整。
我们有很多课程,遗产......我们目前无法找到哪个课程被混淆但不应该。
由于它是二进制序列化,我们无法轻易看到客户端和服务器之间传输的内容。
什么是更好的方法(修改当前代码越少)才能找到哪个是混淆类?
修改 除了dburner答案之外,我想说我已经删除了我的代表并使用了直接方法。像这样,这个名称是固定的,不应该根据编译而改变。
答案 0 :(得分:2)
看一下这个问题Could we save delegates in a file (C#)
如果幸运的话,可以在同一个应用程序中对代理进行序列化和反序列化,因为它们是函数的指针,函数可以有不同的内存位置。
因为你试图在另一个应用程序中反序列化你的类,所以你会遇到奇怪的错误。