Question: How to link kernel32.dll.so to get loaded at a fixed address (0x7bf0000) each time in a Solaris environment
Chris McKillroy
mckillroy at gmail.com
Thu Nov 15 06:12:07 CST 2007
Hello everybody,
I recently run into the following problem:
I tried to use a DLL injection into a process started by a controller
Process using an external code hooking dll
(http://www.madshi.net/madCodeHookDescription.htm)
to achieve some sort of datalink.
In a windows environment the solution works stable and perfectly.
(Controller Process NWNX4 as provided by nwnx4.org, child process
nwn2server.exe, as provided by Obsidian - all legal and intended use).
Under Solaris10 (wine version 0.9.49) the child process regularly
crashed upon creation, respectivley when the dll was injected.
After a lengthy debugging session it appeared that kernel32.dll.so
always gets loaded to a varying address by the runtime linker, which
seems to crash the whole procedure.
I succeeded making a kernel32.dll.so which gets loaded to a constant
address in Solaris by using the tool "crle" on Solarice, but I
couldn't control the address -
it appeared to be somewhat arbitrary which base address was chosen.
The crash problem remained.
I would like to try if the procedure would work if I could get a
kernel32.dll.so which always gets loaded to the same address
0x7bf0000, as in standard windows.
After a posting to the Solaris Linker mailing list we got an answer
(http://mail.opensolaris.org/pipermail/tools-linking/2007-November/000945.html)
which was designed to work with the SUN toolchain.
My question now is:
How would I have to change things (makefile or whatsever) to get
kernel32.dll.so linked in a way to achive that it will be loaded to
address 0x7bf0000each time under Solaris.
Thanks
Chris
More information about the wine-devel
mailing list