¶ ↑
This class is defined in `metasm/os/windows_exports.rb`
It defines an `EXPORT` constant, a Hash
, whose keys are the standard win32 API symbol names, and values are the library name where you can find this symbol.
The equivalent for GNU/Linux is <core/GNUExports.txt>
Usage
The main usage of this class is the automatic generation of the <core/PE.txt> import directories from the external symbols referenced by a binary during compilation.
This is done in the `automagic_symbols` method.
Symbols
The current version holds the symbols available in the Windows XP SP2 32-bit standard libraries:
-
`ntdll`
-
`kernel32`
-
`user32`
-
`gdi32`
-
`advapi32`
-
`ws2_32`
-
`msvcrt`
-
`comdlg32`
-
`psapi`
Ruby symbols are also defined, from `msvcrt-ruby18`.
Ruby library name
On creation, the current ruby library name is inferred from the `RUBY_PLATFORM` constant, in an effort to try to use the available ruby library filename.
The only transformation supported now is to rewrite the ruby version number appearing in the filename for msvcrt-compiled binaries, so that you get the correct `msvcrt-ruby192` name for exemple under ruby1.9.
This is implemented in the `patch_rubylib_to_current_interpreter` method (which is aptly named).
Warning #######
Note that binaries compiled this way will not work on other machines where the exact same library is unavailable.