Remote operations -- need for advice
u60 at comcast.net
Tue Jun 22 14:49:23 CDT 2004
Monday, June 21, 2004 4:00 AM "Alexander Yaworsky" <yaworsky at migusoft.ru>
> I'm thinking how to implement CreateRemoteThread and besides fix memory
> The complete (afaik) list includes:
> NtLockVirtualMemory (do nothing?)
> NtUnlockVirtualMemory (do nothing?)
> Suggested implementation.
> Let's add two groups of handlers to the wineserver, something like
> and remote_operation_xxxx_complete.
> remote_operation should do the following:
> 1) suspend_for_ptrace();
> 2) inject a piece of code into required process and start its execution;
> 3) resume_after_ptrace();
> 4) place calling thread into suspended state (or into some wait state?)
> remote_operation_complete should prepare reply and resume thread suspended
> Injected code should call required function and then
> in context of required process.
> The question is: how to correctly get address of function?
> imho possible solutions are:
> 1) assume ntdll loaded at the same address for all processes --
> 2) get dll base address from per-process dll list and parse ELF by hand --
too complicated (?);
> 3) pass relative offsets and add them later to the ntdll's base address --
> a bit: ntdll may be replaced, although, it is unlikely;
> 4) extend the struct process (server/process.h) and the request
> pointers to required functions -- most reliable and simple but looks
> What do you think?
Mike Hearn has a couple of suggestions here:
I have a VB6 app (United Devices Agent) that requires this api in order to
and have been attempting to learn C for the past month or so and starting to
get a handle on it
but I have a lot to learn about posix and signaling yet and generally how
things work. If you
need or would like a volunteer to help test and troubleshoot using an actual
app, my hand is
up :-). Meantime, I'm continuing to try to learn how all this works
More information about the wine-devel