Technical Stream
Technical Stream
Conversion of .NET to x86 executables

Abstract:

To implement the sub-project crossgen from .NET Core runtime (https://github.com/dotnet/coreclr) as a standalone project separating it completely from .NET runtime.

Objective:

The study should result in the development of a source code on the C/C++ cross-platform console utility that allows the conversion of .NET samples into Native samples (32-bit Intel x86). The file that is generated should have a correct PE header and valid import/export tables (all calls to .NET runtime functions are replaced by imports of these functions). The software should be implemented without using the .NET platform in any form.

Conversion of .NET executables to x86

Figure 1

An example of the Ngen utility’s work for one and the same function is shown in Figure 2.

Conversion of .NET executables to x86Conversion of .NET executables to x86

Figure 2

Data:

https://github.com/dotnet/coreclr

The data is available after registration.

Requirements:

It is necessary to implement the sub-project crossgen from .NET Core runtime (https://github.com/dotnet/coreclr) as a standalone project separating it completely from .NET runtime. The project should involve the development of a console program (at least for the Intel x86 x32 x64 for Windows and the *nix families) that can convert .NET executable files into equivalent executable files of the x86 architecture.

Evaluation criteria:

The following criteria will be used to evaluate the solutions:

  1. The functional compliance of the original executable .NET file and the resulting x86 executable file.
  2. The range of supported versions of incoming .NET files (.NET Framework 2.0 — 4.6)
  3. The ability to upgrade in the event of new versions of the .NET platform being released.