e3d7b54ca3
Former-commit-id: bb0edac46772972b4c99a84b8e1791f43b9195f5
46 lines
1.5 KiB
Plaintext
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.
|