Jo Shields e3d7b54ca3 Initial Debianization, imported from Debian 3.2.8 package
Former-commit-id: bb0edac46772972b4c99a84b8e1791f43b9195f5
2014-08-13 12:08:26 +01:00

46 lines
1.5 KiB
Plaintext

binfmt-pe
This utility determines the Microsoft PE executable file's
type (Native, .NET CLR) and runs it using the appropriate
runtime (WINE, CLI). It also detects and refuses to run
MS-DOS (non-PE) executables.
It is inteded to be used in a Linux binfmt configuration,
since binfmt itself is incapable of reliably distinguishing
between various PE file types (since they have no different
"magic string") and runtimes refuse to run files which
they don't support (CLR runtimes refuse to run
Native images and vice versa).
Technical information
The file's type is determined from certain characteristics
in the PE / COFF file header. It should be noted that the
techniques used might not be standard and are not throughtly
tested to work, so false detections might occur.
In short:
- An MS-DOS executable is assumed if the PE offset in the MS-DOS
header is NULL or points to an offset beyond the file's length
- A CLR file is assumed if the PE header's directory entry
for "CLI header" is not NULL and points to a valid offset in
the executable file.
- A native executable file is assumed otherwise.
The runtime names are hardcoded into the utilit (that is -
not configurable) and are exec'ed from the utility --
"wine" is used for native images, "cli" is used for CLR images.
Credits
This utility is based on the PE / COFF header structures from
Ximian's Mono .NET runtime project ( http://www.go-mono.com/ ).
Author
Ilya Konstantinov <future@shiny.co.il>
Licenses
This utility is covered by the GPL license.