[Bug 23816] Multiple .NET applications obfuscated with 'SmartAssembly' fail to run with Wine-Mono (invalid IL code rejected by Mono)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 16 08:37:22 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=23816

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |WONTFIX
            Summary|Bloodline Champions Client  |Multiple .NET applications
                   |doesn't start with Mono     |obfuscated with
                   |                            |'SmartAssembly' fail to run
                   |                            |with Wine-Mono (invalid IL
                   |                            |code rejected by Mono)

--- Comment #25 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

refining summary to collect dupes here.

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Stunlock Studios/Bloodline
Champions/Binary

$ wine ./BloodlineChampions.exe
Unknown heap type: SmartAssembly

Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type
initializer for <Module> ---> System.InvalidProgramException: Invalid IL code
in #c.#b:#bOd (): IL_0005: bne.un.s  IL_000e

  at <Module>..cctor () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An
exception was thrown by the type initializer for <Module> --->
System.InvalidProgramException: Invalid IL code in #c.#b:#bOd (): IL_0005:
bne.un.s  IL_000e

  at <Module>..cctor () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---

--- snip ---

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Stunlock Studios/Bloodline
Champions/Binary

$ wine ./BloodlineChampionsLoader.exe
Unknown heap type: SmartAssembly

Unhandled Exception:
System.InvalidProgramException: Invalid IL code in ┬.┬ƒ:┬ (string[]):
IL_0012: brfalse.s IL_001c

[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidProgramException: Invalid IL
code in ┬.┬ƒ:┬ (string[]): IL_0012: brfalse.s IL_001c
--- snip ---

There are statements from Mono guys to not change the behaviour to allow for
invalid IL code.

--- quote ---
Many .NET obfuscators change the assemblies such that they are not technically
correct assemblies (they fall outside the .NET assembly specs) but such that
they still run on the Microsoft .NET runtime by exploiting bugs specific to
Microsoft's implementation. I suspect they do this to make it harder for
assembly reader tools/libraries to load the assemblies. Unfortunately, this
also prevents Mono runtime from loading the assemblies. In general Mono has a
policy of not "fixing" support for this kind of invalid obfuscated code, so
you'll need to ask SmartAssembly support for help.
--- quote ---

--- quote ---
Mono fully supports valid IL. Unfortunately SmartAssembly is known to generate
invalid IL which only runs because Microsofts .NET implementation has bugs and
does not reject the broken assembly. There is not much we can do in this case.
Your best bet is to contact SmartAssembly and let them know the problem and see
if they would fix the issue.
--- quote ---

Resolving 'WONTFIX'.

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list