【问题标题】:Strange Runtime Error after obfuscation混淆后出现奇怪的运行时错误
【发布时间】:2017-01-03 01:13:15
【问题描述】:

我们有一个名为 DataObjectJsonLoader 的程序集。里面有一个类如下:

 public static class DrillingFluidDataObjectJsonLoader
 {
     public static  Result<DrillingFluid> Load(string strDrillingFluid)
     {
        ....
        var type = ConvertToMudType(...);
        ....
     } 
     private static  MudType ConvertToMudType(string strDillingFluidType)
     {
      ....
     }     
 }

在混淆之前一切正常。我们使用的混淆器Net Reactor 5.0。我们已经禁用了字符串加密。但是经过混淆处理后,当我们调用上面的公共函数时,会出现runtime binder异常:

“DrillingFluidDataObjectJsonLoader”不包含“ConvertToMudType”的定义。

这个问题的根本原因是什么? 以及如何解决?

【问题讨论】:

  • 网络反应堆支持不是问这个问题的更好地方吗?显然它正在重命名一个私有方法,但没有改变调用站点。
  • 混淆和解释接口(几乎所有 JSON 工具都这样做)是一种冒险的方式。你确定,你的软件总有一天会被人反汇编吗?

标签: c# .net obfuscation net-reactor


【解决方案1】:

也许只是将此类从混淆中排除作为临时解决方案...

  [Obfuscation(Exclude = true, ApplyToMembers = true)]

【讨论】:

  • 这对我帮助很大,我不知道这个属性。
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 2014-12-20
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2020-06-30
相关资源
最近更新 更多