[Mono-list] 2.4.2.3 Invalid IL Code seen

Michael Hutchinson m.j.hutchinson at gmail.com
Mon Aug 31 22:01:38 EDT 2009


On Mon, Aug 31, 2009 at 7:59 PM, Bob Denny<rdenny at dc3.com> wrote:
>
> I'm unsure whether this is a problem with Mono or with Liquid's library, so I'm
> posting here in case this rings a bell with someone. The Liquid code runs fine
> on Windows under .NET 2.0. The fact that it is in the Liquid "resigtration" code
> may be a key piece of evidence, or it may not! They told me that there is no
> reason my code should not run under Mono - that my licensing info is self
> contained in the built IL binaries.

Considering that there's some sort of license validation embedded in
the Liquid XML runtime, it's pretty likely that they've also
obfuscated the assembly. Some obfuscators use particular IL patterns
that are invalid according to the CLI spec, but are "overlooked" by
.NET dues to limitations in its IL validation. They're essentially
exploiting .NET bugs in order to confuse decompilers. The downside is
that assemblies that have been obfuscated using these techniques
usually don't work on Mono, which doesn't have the same
bugs/limitations -- and they might not even work on future versions of
.NET.

Of course,  I could be wrong... it might be a Mono bug.

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Mono-list mailing list