当前位置: 首页 > 编程语言 > C#

Json.NET和混淆,反序列化不起作用分享

时间:2023-04-10 16:18:37 C#

Json.NET和混淆,反序列化不起作用网络和混淆。我的配置:VS2013、C#、.NET4.0、Json.Net7.0.1、CodeWall/CryptoObfuscator。一切正常,直到我混淆我的代码。之后,我无法反序列化我的json文件(它已正确序列化!)。我们的解决方案提供了DefaultSerializationBinder类的“hack”,您只需从源代码中挑选并根据需要进行修改(或提供抽象类SerializationBinder的自定义覆盖)。当它试图从程序集名称中发现正确的程序集时,问题似乎出现了……这里的混淆与两者不匹配。这里是您需要重写的方法的代码:privatestaticTypeGetTypeFromTypeNameKey(TypeNameKeytypeNameKey){stringassemblyName=typeNameKey.AssemblyName;stringtypeName=typeNameKey.TypeName;if(assemblyName!=null){//你看,我不像你那样喜欢使用过时的方法,但这是唯一的方法//Assembly.Load不会检查GAC的部分名称Assemblyassembly=Assembly.LoadWithPartialName(程序集名称);if(assembly==null){stringpartialName=assemblyName;varelements=assemblyName.Split(',');如果(elements.Length>0){partialName=elements[0];}//将在主目录之外找到使用Assembly.LoadFile加载的程序集Assembly[]loadedAssemblies=AppDomain.CurrentDomain.GetAssemblies();foreach(加载程序集中的程序集a){如果(a.GetName().Name==程序集名称||a.FullName==程序集名称||a.GetName().Name==partialName){程序集=a;休息;}}}if(assembly==null){thrownewJsonSerializationException(string.Format("无法加载程序集'{0}'。",assemblyName));类型type=assembly.GetType(typeName);if(type==null){thrownewJsonSerializationException(string.Format("在程序集'{1}'中找不到类型'{0}'。",typeName,assembly.FullName));}返回类型;}elseif(typeName!=null){returnType.GetType(typeName);}else{返回空值;}}我希望这可以帮助你!随时分享您的想法,欢迎其他测试!以上就是C#学习教程的全部内容:Json.NET和Obfuscation,反序列化不行。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: