这些 IL 线有什么不同? (福迪输出组件)

What's different about these IL lines? (Fody output assembly)

Dotfuscator 使用 ildasm 获取 IL 代码,然后在其上执行混淆。 Dotfuscator 在一个特定程序集上出现问题。这是解决方案中唯一使用 IL 编织器 Fody 的程序集,在编译后将 "weave" 附加 CIL 添加到程序集中。有趣的是,Dotfuscator 表示它很难处理哪一行,并且该行始终是 ReSharper 在 Visual Studio 中以不同方式突出显示的语法。总是有不止一行以这种方式突出显示,但 Dotfuscator 总是在第一行出错...有趣。

如果你告诉我为什么 ReSharper 认为这些行不同,也许我可以弄清楚为什么 Dotfuscator 不能混淆这个程序集,并且在解决方案的 100 多个其他程序集中只有这个程序集。

Dotfuscator Professional Edition Version 4.21.0.3600-release+990d7ec.20160427.26945 Build machine license. This software may be used on binaries for general release.  (TaskId:2742)
   Your subscription expires in 300 days. (TaskId:2742)
  Copyright 2002-2016 PreEmptive Solutions, LLC All Rights Reserved. (TaskId:2742)
   (TaskId:2742)
  Use of this software implies acceptance of accompanying license agreement. (TaskId:2742)
  LICENSED TO: NOPE! (TaskId:2742)
  SERIAL #: NOPE! (TaskId:2742)
  [Build Output] Loading Assemblies... (TaskId:2742)
  [Build Output]  (TaskId:2742)
  [Build Output] Running C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\ildasm.exe /OUT=C:\Users\NOPE!\AppData\Local\Temp\~NOPE!.142\NOPE!.dll.il /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /LINENUM /FORWARD C:\NOPE!\bin\x64\Release\NOPE!.dll (TaskId:2742)
  [Build Output]  (TaskId:2742)
  [Build Output] Encountered : at line 4194, column 12. (TaskId:2742)
  Was expecting one of: (TaskId:2742)
      <HEXBYTE> ... (TaskId:2742)
      <SQSTRING> ... (TaskId:2742)
      <DSQSTRING> ... (TaskId:2742)
      "{" ... (TaskId:2742)
      "}" ... (TaskId:2742)
      ".zeroinit" ... (TaskId:2742)
      ".#line" ... (TaskId:2742)
      ".language" ... (TaskId:2742)
      ".permission" ... (TaskId:2742)
      ".param" ... (TaskId:2742)
      ".custom" ... (TaskId:2742)
      ".vtentry" ... (TaskId:2742)
      ".locals" ... (TaskId:2742)
      ".entrypoint" ... (TaskId:2742)
      ".emitbyte" ... (TaskId:2742)
      ".override" ... (TaskId:2742)
      ".data" ... (TaskId:2742)
      ".maxstack" ... (TaskId:2742)
      ".export" ... (TaskId:2742)
      ".try" ... (TaskId:2742)
      ".permissionset" ... (TaskId:2742)
      ".line" ... (TaskId:2742)
      "sub.ovf.un" ... (TaskId:2742)
      "stobj" ... (TaskId:2742)
      "mul.ovf.un" ... (TaskId:2742)
      "throw" ... (TaskId:2742)
      "stfld" ... (TaskId:2742)
      "conv.ovf.u.un" ... (TaskId:2742)
      "ble" ... (TaskId:2742)
      "stind.i" ... (TaskId:2742)
      "conv.u2" ... (TaskId:2742)
      "newobj" ... (TaskId:2742)
      "br.s" ... (TaskId:2742)
      "cpblk" ... (TaskId:2742)
      "conv.ovf.i4" ... (TaskId:2742)
      "ldind.i4" ... (TaskId:2742)
      "ldelem.r4" ... (TaskId:2742)
      "ldflda" ... (TaskId:2742)
      "mul.ovf" ... (TaskId:2742)
      "ldelem.i1" ... (TaskId:2742)
      "stelem.i8" ... (TaskId:2742)
      "clt" ... (TaskId:2742)
      "ldarg.1" ... (TaskId:2742)
      "rem" ... (TaskId:2742)
      "ckfinite" ... (TaskId:2742)
      "ldc.i4.5" ... (TaskId:2742)
      "unbox" ... (TaskId:2742)
      "add.ovf" ... (TaskId:2742)
      "ldind.ref" ... (TaskId:2742)
      "ldarga.s" ... (TaskId:2742)
      "stind.i8" ... (TaskId:2742)
      "conv.ovf.u4.un" ... (TaskId:2742)
      "ldnull" ... (TaskId:2742)
      "conv.ovf.i4.un" ... (TaskId:2742)
      "ldind.r8" ... (TaskId:2742)
      "conv.i4" ... (TaskId:2742)
      "blt.un.s" ... (TaskId:2742)
      "call" ... (TaskId:2742)
      "ldloca.s" ... (TaskId:2742)
      "nop" ... (TaskId:2742)
      "conv.ovf.u4" ... (TaskId:2742)
      "ldind.u4" ... (TaskId:2742)
      "stelem.r4" ... (TaskId:2742)
      "ldelema" ... (TaskId:2742)
      "leave" ... (TaskId:2742)
      "ldelem.i2" ... (TaskId:2742)
      "stelem.i1" ... (TaskId:2742)
      "ldelem.u1" ... (TaskId:2742)
      "ldarg.2" ... (TaskId:2742)
      "blt.un" ... (TaskId:2742)
      "ldlen" ... (TaskId:2742)
      "ldc.i4.6" ... (TaskId:2742)
      "ldvirtftn" ... (TaskId:2742)
      "rethrow" ... (TaskId:2742)
      "stind.r4" ... (TaskId:2742)
      "bge.un" ... (TaskId:2742)
      "stind.ref" ... (TaskId:2742)
      "ldsfld" ... (TaskId:2742)
      "ldtoken" ... (TaskId:2742)
      "conv.r8" ... (TaskId:2742)
      "conv.ovf.u8.un" ... (TaskId:2742)
      "stind.i1" ... (TaskId:2742)
      "add.ovf.un" ... (TaskId:2742)
      "conv.ovf.i8.un" ... (TaskId:2742)
      "stsfld" ... (TaskId:2742)
      "brtrue.s" ... (TaskId:2742)
      "ldarg.s" ... (TaskId:2742)
      "tail." ... (TaskId:2742)
      "brtrue" ... (TaskId:2742)
      "ldarg" ... (TaskId:2742)
      "xor" ... (TaskId:2742)
      "conv.u4" ... (TaskId:2742)
      "ldc.i8" ... (TaskId:2742)
      "ldloc" ... (TaskId:2742)
      "stloc.0" ... (TaskId:2742)
      "conv.u" ... (TaskId:2742)
      "stelem.i2" ... (TaskId:2742)
      "endfault" ... (TaskId:2742)
      "ldelem.u2" ... (TaskId:2742)
      "ldarg.3" ... (TaskId:2742)
      "ldind.i" ... (TaskId:2742)
      "ldc.i4.7" ... (TaskId:2742)
      "endfilter" ... (TaskId:2742)
      "ble.un.s" ... (TaskId:2742)
      "dup" ... (TaskId:2742)
      "stind.i2" ... (TaskId:2742)
      "isinst" ... (TaskId:2742)
      "initobj" ... (TaskId:2742)
      "ldc.r4" ... (TaskId:2742)
      "unaligned." ... (TaskId:2742)
      "conv.ovf.i" ... (TaskId:2742)
      "and" ... (TaskId:2742)
      "stloc.1" ... (TaskId:2742)
      "sub" ... (TaskId:2742)
      "shr" ... (TaskId:2742)
      "ldelem.i4" ... (TaskId:2742)
      "sub.ovf" ... (TaskId:2742)
      "ldloca" ... (TaskId:2742)
      "ldc.i4.8" ... (TaskId:2742)
      "div.un" ... (TaskId:2742)
      "callvirt" ... (TaskId:2742)
      "ldc.i4.0" ... (TaskId:2742)
      "ble.un" ... (TaskId:2742)
      "arglist" ... (TaskId:2742)
      "rem.un" ... (TaskId:2742)
      "stelem.i" ... (TaskId:2742)
      "conv.ovf.i8" ... (TaskId:2742)
      "ldind.i8" ... (TaskId:2742)
      "starg" ... (TaskId:2742)
      "initblk" ... (TaskId:2742)
      "pop" ... (TaskId:2742)
      "ldelem.r8" ... (TaskId:2742)
      "mul" ... (TaskId:2742)
      "stloc.2" ... (TaskId:2742)
      "conv.ovf.u2.un" ... (TaskId:2742)
      "stloc" ... (TaskId:2742)
      "conv.ovf.i2.un" ... (TaskId:2742)
      "refanytype" ... (TaskId:2742)
      "stelem.i4" ... (TaskId:2742)
      "ldelem.u4" ... (TaskId:2742)
      "bgt.un.s" ... (TaskId:2742)
      "sizeof" ... (TaskId:2742)
      "beq.s" ... (TaskId:2742)
      "ldc.i4.1" ... (TaskId:2742)
      "neg" ... (TaskId:2742)
      "beq" ... (TaskId:2742)
      "ldloc.0" ... (TaskId:2742)
      "stloc.s" ... (TaskId:2742)
      "ldc.i4.m1" ... (TaskId:2742)
      "break" ... (TaskId:2742)
      "stind.i4" ... (TaskId:2742)
      "localloc" ... (TaskId:2742)
      "blt.s" ... (TaskId:2742)
      "conv.i8" ... (TaskId:2742)
      "ldind.r4" ... (TaskId:2742)
      "conv.ovf.i.un" ... (TaskId:2742)
      "brfalse" ... (TaskId:2742)
      "not" ... (TaskId:2742)
      "conv.ovf.i1" ... (TaskId:2742)
      "bgt" ... (TaskId:2742)
      "ldind.i1" ... (TaskId:2742)
      "conv.ovf.u8" ... (TaskId:2742)
      "stloc.3" ... (TaskId:2742)
      "stelem.r8" ... (TaskId:2742)
      "ldsflda" ... (TaskId:2742)
      "ldstr" ... (TaskId:2742)
      "shl" ... (TaskId:2742)
      "cgt.un" ... (TaskId:2742)
      "switch" ... (TaskId:2742)
      "ldelem.ref" ... (TaskId:2742)
      "castclass" ... (TaskId:2742)
      "stind.r8" ... (TaskId:2742)
      "bgt.s" ... (TaskId:2742)
      "volatile." ... (TaskId:2742)
      "ldc.i4.2" ... (TaskId:2742)
      "jmp" ... (TaskId:2742)
      "ldloc.1" ... (TaskId:2742)
      "ldobj" ... (TaskId:2742)
      "conv.r4" ... (TaskId:2742)
      "leave.s" ... (TaskId:2742)
      "ldftn" ... (TaskId:2742)
      "ldfld" ... (TaskId:2742)
      "conv.ovf.u1.un" ... (TaskId:2742)
      "conv.i1" ... (TaskId:2742)
      "conv.u8" ... (TaskId:2742)
      "conv.ovf.i1.un" ... (TaskId:2742)
      "ldc.i4.s" ... (TaskId:2742)
      "conv.ovf.i2" ... (TaskId:2742)
      "ldind.i2" ... (TaskId:2742)
      "ceq" ... (TaskId:2742)
      "ldc.i4" ... (TaskId:2742)
      "bge.un.s" ... (TaskId:2742)
      "conv.ovf.u1" ... (TaskId:2742)
      "ldarga" ... (TaskId:2742)
      "ldind.u1" ... (TaskId:2742)
      "bge" ... (TaskId:2742)
      "conv.i" ... (TaskId:2742)
      "ble.s" ... (TaskId:2742)
      "stelem.ref" ... (TaskId:2742)
      "ldc.i4.3" ... (TaskId:2742)
      "cgt" ... (TaskId:2742)
      "conv.r.un" ... (TaskId:2742)
      "ldloc.2" ... (TaskId:2742)
      "conv.ovf.u" ... (TaskId:2742)
      "shr.un" ... (TaskId:2742)
      "cpobj" ... (TaskId:2742)
      "blt" ... (TaskId:2742)
      "ldc.r8" ... (TaskId:2742)
      "conv.i2" ... (TaskId:2742)
      "or" ... (TaskId:2742)
      "conv.u1" ... (TaskId:2742)
      "br" ... (TaskId:2742)
      "ldloc.s" ... (TaskId:2742)
      "calli" ... (TaskId:2742)
      "box" ... (TaskId:2742)
      "endfinally" ... (TaskId:2742)
      "conv.ovf.u2" ... (TaskId:2742)
      "bge.s" ... (TaskId:2742)
      "ldind.u2" ... (TaskId:2742)
      "ldelem.i" ... (TaskId:2742)
      "newarr" ... (TaskId:2742)
      "clt.un" ... (TaskId:2742)
      "ldelem.i8" ... (TaskId:2742)
      "add" ... (TaskId:2742)
      "ret" ... (TaskId:2742)
      "ldarg.0" ... (TaskId:2742)
      "starg.s" ... (TaskId:2742)
      "brfalse.s" ... (TaskId:2742)
      "bgt.un" ... (TaskId:2742)
      "mkrefany" ... (TaskId:2742)
      "ldc.i4.4" ... (TaskId:2742)
      "bne.un.s" ... (TaskId:2742)
      "div" ... (TaskId:2742)
      "bne.un" ... (TaskId:2742)
      "ldloc.3" ... (TaskId:2742)
      "refanyval" ... (TaskId:2742)
      "stelem" ... (TaskId:2742)
      "stelem.any" ... (TaskId:2742)
      "ldelem" ... (TaskId:2742)
      "ldelem.any" ... (TaskId:2742)
      "unbox.any" ... (TaskId:2742)
      "no." ... (TaskId:2742)
      "constrained." ... (TaskId:2742)
      "readonly." ... (TaskId:2742)
      "ooo" ... (TaskId:2742)
      "lll" ... (TaskId:2742)
      <ID> ... (TaskId:2742)
       (TaskId:2742)
  [Build Output] Build Error. (TaskId:2742)

福迪是邪恶的。

Fody 是一名 IL 编织者。它可以在编译后向您的程序集添加代码。问题是,由于 Fody,PDB 文件最终与程序集不匹配,因此 ILDASM 运行 产生了生成有效 IL 代码的问题。删除 PDB,Dotfuscator 再次工作。