2016-09-02 17 views
5

Dotfuscator wykorzystuje ildazm do uzyskania kodu IL, a następnie wykonuje zaciemnianie. Dotfuscator dusił się na jednym konkretnym zgromadzeniu. Jest to jedyny zestaw w rozwiązaniu wykorzystującym Fody, tkacz IL, do "splatania" dodatkowego CIL do złożenia po jego skompilowaniu. Co ciekawe, Dotfuscator mówi, z którą linią ma trudności, a ta linia jest zawsze inaczej podświetlana przez program ReSharper w Visual Studio. Zawsze jest podświetlona więcej niż jedna linia, ale Dotfuscator zawsze popełnia błędy na pierwszym ... Interesujące.Czym różnią się te linie IL? (Zespół wyjściowy Fody)

Jeśli powiesz mi, dlaczego ReSharper sądzi, że te linie są różne, może uda mi się ustalić, dlaczego Dotfuscator nie może zamazać tego zespołu, a tylko ten zestaw spośród ponad 100 innych rozwiązań.

IL code snippets

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) 
+2

Nie jestem pod żadnym względem niczym podobnym do eksperta od CIL, ale myślę, że to poprzednie linie powodują problem. Kod 'stloc.s', z mojego rozumowania, powinien zapewniać wartość, w której umieszcza się wartość wyskakującą ze stosu. Jest to sytuacja nieco mniejsza, na linii 4195, w przeciwieństwie do 4193. Ponownie, tylko przeczucie na moim końcu. –

+0

Zgadzam się, że IL poprzednich linii wygląda na zniekształconą z powodu bliższej inspekcji, ale dlaczego ILDASM byłby zły IL? –

+0

Możesz uzyskać IL z innych narzędzi, takich jak ILSpy lub dotPeek. Sprawdź je i porównaj wynik. W oparciu o to, co wiem, ILDASM jest niezawodny, więc może sam zespół jest zepsuty. –

Odpowiedz

3

Fody jest zła.

Fody jest tkaczem IL. Po skompilowaniu może dodać kod do zestawu. Problem polega na tym, że plik PDB został źle dopasowany do złożenia z powodu Fody, więc ILDASM napotkał problem z wygenerowaniem prawidłowego kodu IL. Usuń PDB i Dotfuscator znów działa.

+1

Dobre samodzielne ustalanie, ale aby ta kontrola jakości była kompletna, powinieneś wspomnieć o swoim kompletnym pakiecie narzędzi (w tym Fody) w Q, w przeciwnym razie inne osoby z tym samym problemem mogą nie znaleźć Q (i twojego A) w przyszłości. – AakashM

+0

Zauważone i naprawione! –

+0

Dziękuję - otrzymuję ten sam błąd z 'ildasm', jeśli uruchomię go na zespole, który jest wyprowadzany z' ILRepack.exe' ... usunięcie pliku '* .pdb' pozwala na zakończenie procesu dotfuscation. – ChrisW

Powiązane problemy