[Mono-list] 2.4.2.3 Invalid IL Code seen

Miguel de Icaza miguel at novell.com
Tue Sep 1 11:20:02 EDT 2009


Hello,

> > 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.

At one point we had this discussion at ECMA, and I believe answer from
Microsoft was that they considered accepting harmless invalid CIL code
to be a value add feature of Microsoft's implementation of the CIL.

Miguel.



More information about the Mono-list mailing list