ASP.NET News from Blogger: IKVM.NET Weblog   Get the feed of: IKVM.NET Weblog

Total News: 130

Using MethodRental.SwapMethodBody to do Method Level JIT Compilation

IKVM.NET has always had a classgranualarity JIT. Whenever a type is first "used" the CLR fires the AppDomain.TypeResolve event and at that point the IKVM.NET runtime compiles the ...

IKDASM - IL Disassembler Example for IKVM.Reflection

A while ago I wrote an IL disassembler to test IKVM.Reflection. Both as a correctness test and also to test if the API surface exposes enough of the underlying information. I th...

MS12-025

This patch Tuesday Microsoft released MS12-025 that fixes approximately a zillion vulnerabilities in System.Drawing.dll. Here's what they fixed (multiple instances of each issue...

IKVM.Reflection: Inspecting an Assembly Without Loading Dependencies

One of the advantages of IKVM.Reflection over System.Reflection is that it is much easier to load an assembly without having to load its dependencies. This functionality is used by ...

Lesser Known CLR Custom Attributes -- UnsafeValueType

In a comment to the previous post about CLR Custom Attributes I listed some other custom attributes that theCLR recognizes (by name). Some of them I previously thought were compiler...

CLR Supported Custom Attributes

After working with the CLR for more than a decade, once in a while I stillrun intothe occasional surprise. It turns out that the (non pseudo-) custom attributes that CLR recogni...

Lang.NEXT

I'm looking forward to speaking at Lang.NEXT. To be held at the Microsoft Campus on April 2 - 4. If you're in the neighborhood and are interested in programming language design ...

MS12-016 Vulnerability Details

Unlike most bugs that I run into, this one I actively went looking for. After being reminded of the cloning attack (in the context of Java) I wrote some reflection code to scan the ...

February 2012 Java Critical Patch Update Vulnerability Details

Last week, Oracle released the February 2012 Oracle Java SE Critical Patch Update. This included fixes for two related problems I reported to them on August 1, 2011. The first probl...

IKVM.NET 7.0 Update 1 Release Candidate 0

A couple of annoying bugs have been reported since 7.0 was released, so I decided to do an update. Changes: Changed version to 7.0.4335.1. FileStore for no...

IKVM.NET 0.46 Update 1 Release Candidate 0

IKVM.NET 0.46 is the last OpenJDK 6 based release, so it will be supported longer than usual. I haven't yet decided how long exactly, but in any case here is a release candidate for...

Accessibility, Visibility and Transparency

There are a couple of subtle differences between the JVM and CLR with respect to member accessibility. For example, the JVM will allow you to access public members in non-public bas...

IKVM.NET 7.0 Released

I've releasedIKVM.NET 7.0 to SourceForge. The binaries are identical to the ones in release candidate 0. Release Notes This document lists the improvements, known issues an...

Custom Modifiers

As I wrote earlier today, the theme of today's snapshot is custom modifiers, but I decided to expand a bit on that, since they are a relatively unknown feature of .NET. In the e...

Function Pointer Types

In today's snapshot I also added support for function pointer types. The CLI supports both managed and unmanaged function pointer types, however both are unverifiable. Here's a ...

IKVM.NET 7.0 Release Candidate 0

The first release candidate is available. No changes (except the version number andstrong naming)relative to the last development snapshot. What's New (relative to IKVM.NET ...

Managed PE File Types

Just a quick blog about the different types of managed PE files. Here's a table: Description C# compiler switchPE typemachinecorflags MSIL ...

Windows Runtime (aka WinRT) Thoughts

Confusion After the Build keynote many people were confused. I think there were three main reasons for that: 1) Metro Style Apps and Windows Runtime APIs were introduced together, 2)...

Platform MBean Server

The release notes for IKVM.NET have always said "Not implemented" for java.lang.management and javax.management. This was mostly due to the fact that I don't know very much about ...

MethodHandle From C#

using java.lang.invoke;classProgram { static void Main() { MethodType mt = MethodType.methodType(typeof(void), typeof(string), typeof(object[])); MethodHandle mh = MethodHandles.l...

MethodHandle Progress

I've been working on JSR-292 and in particular MethodHandle support the past week. It's been fun and I only found a single CLR bug so far, so I guess that's not too bad. I...

How To Disable the Java Security Manager

Suppose you have a type safety vulnerability in Java, you could use it to execute native code, but you can also simply disable the SecurityManager: import java.io.*; import java.lan...

How to Detect if a Method is Overridden Redux

Using a clever hack is always risky. Previously I described how to use the ldftn and ldvirtftn CIL instructions to detect if a method is overriden by a subclass. It turns out that t...

java.lang.AutoCloseable

Java 7 introduces try-with-resources. This is similar1 to the C# using construct. Yesterday I committed the changes necessary for IKVM to have bi-directional interop between t...

JDK 7 Thread Cloning Vulnerability

I warned on the mailing list when this came up, but apparently was ignored,so maybe a blog post will help. In one of last year's updates of JDK 6 the cloning vulnerabilit...

Excel 2010 Bait-and-Switch Sandbox Escape

Office 2010 introduced a sandboxing technology for untrusted documents called Protected View. When a document is opened from an untrusted location (e.g. the Internet) it is first op...

How to Run Unpatched CLR Side-by-Side

If you want to investigate a CLR security patch, you can of course setup a VM where you don't install the patch or you can simply not install the patch until after the investigation...

Calendar

I'll be at the following conferences this summer: July 18-20: JVM Language Summit July 23-25: Monospace 2011 September 13-16: BUILD Send me an e-ma...

Implementation Dependencies

Field Ordering A new feature in today's snapshot is that java.lang.Class.getDeclaredFields() now returns the fields in class declaration order for ikvmc compiled code (dynamically co...

MS11-028 Vulnerability Details

Next week I will post the details of the bug fixed in MS11-028 released yesterday. I did not discover this vulnerability, but in Februari I did find a public bug report th...

MIX11

I'll be at MIX this year. If you want to meet up for achat, drop me a note. ...

.NET/C# Generics History

Yesterday Don Syme posted a short history of .NET/C# generics. Wow. Just wow. I knew MSR was instrumental in getting generics into the CLR, but not that it was t...

IKVM.NET 0.46 Release Candidate 0

Finally, after way too long, the first 0.46 release candidate is available. What's New (relative to IKVM.NET 0.44): Integrated OpenJDK 6 b22. Added -Xrefer...

CLR Type Names

Type names look like a simple concept. Every type has a unique name within the assembly that defines it. It turns out that there is a slight complication. Even though the CLI sp...

Exception Performance Part 3

This is the final part of three part series on exception performance that started in 2008. Previous parts are:Exception Performance Part 1Exception Performance Part 2 Le...

Mono 2.10 Released

Mono 2.10 was released this week. It includes a version of the Mono C# compiler that uses IKVM.Reflection as its back end. Last yearin the two days beforeFOSDEM I hacked mc...

How to Detect if a Method is Overridden

Suppose you want to know if (the class of) a particular object overrides a virtual method. For an example of this see OpenJDK'sThread.isCCLOverriden()(line 1573). In Java ...

IKVM.NET 0.36 Update 3

On request of an IKVM.NET user still stuck on .NET 1.1 the memory model fix has been backported to 0.36. Changes: Changed version to 0.36.0.14. Emit a memo...

C# Async CTP

Last week at the PDC Microsoft released a CTP of the upcoming C# (and VB.NET) async feature. When you install the Async CTP and run the code below with the current IKVM.NET release ...

How to Hack Your Own JIT Intrinsic

Yesterday I wrote about Thread.MemoryBarrier() and some of its performance characteristics. I wanted to do some benchmarking to see whether mfence really is faster than a locked mem...

Memory Model Fix

In last week's 0.44.0.6 update I fixed a memory model bug. In retrospect it was a pretty dumb bug, but in my defence, even the easy parts of memory models are still pretty subtle an...

MS10-077 Vulnerability Details

Last week Microsoft released MS10-077. Here are the details. Coincidentally I found this vulnerability in the .NET 4.0 RC on the day that .NET 4.0 went RTM (April 12, 2010...

IKVM.NET 0.44 Update 1 RC 0

Time for a refresh of 0.44 with some bug fixes. Changes: Changed version to 0.44.0.6 Backported various build system improvements. Backported IKVM.Refle...

IKVM 0.44 Released

I've released IKVM 0.44 to SourceForge. The binaries are identical to the ones in release candidate 5. Release Notes This document lists the known issues and incompatibilities. Runt...

Running RSSOwl on IKVM.NET

I recently upgraded my RSS reader from the older version I was still using to the current version. That turned out to be a mistake. The new version was even more broken than the old...

IKVM.NET 0.44 Release Candidate 5

Two more bug fixes and this will hopefully be the final release candidate. Changes: Changed version to 0.44.0.5 Don't seal @Internal classes. Fixed bug ...

Reverse Engineering the MS10-060 .NET Security Patch

On Patch Tuesday, one of the patches Microsoft released was MS10-060. It addresses a Silverlight memory corruption and a CLR delegate issue. I was curious about the CLR delegate iss...

IKVM.NET 0.44 Release Candidate 1

A new release candidate with two bug fixes. Changes: Changed version to 0.44.0.1 Fixed verifier regression introduced with try/fault handler changes. Thanks to E...

Bug Reports

I've disabled the ability for anonymous users to post bug reports (and feature requests). Two useless duplicate reports (3026137 and 3026140) pushed me over the edge. Some...

IKVM 0.42 Update 1 Released

I've promoted 0.42 Update 1 RC 2 to an official release. Changes (Update 1 RC 0 + RC 1 + RC 2): Added fix to mangle all artificial type names if they clash with Jav...

View Other bloggers