Page faults and instruction emulation

Ove Kaaven ovehk at ping.uio.no
Thu Oct 18 20:34:58 CDT 2001


On 18 Oct 2001, Alexandre Julliard wrote:

> Ove Kaaven <ovehk at ping.uio.no> writes:
> 
> > I know of two Wine architecture issues that must be resolved before the
> > anti-debugger check can succeed in win95 mode.
> > 
> > 1. it checks that teb->debug_context (TEB offset 0x20) is zero. In Wine,
> > it isn't (the NT pid is stored there), so this check fails.
> > 
> > Is it possible to change Wine's TEB structure to fix this?
> 
> It would probably break some of the NT native dlls.

Well, perhaps it could depend on the windows version somehow...

> > But to emulate an instruction from Wine's pre-exception page fault handler
> > (VIRTUAL_HandleFault()), the current context must be passed along to it,
> > so VIRTUAL_HandleFault and all Wine handlers that can be registered with
> > VIRTUAL_SetFaultHandler must get an extra parameter. Is this too
> > objectionable to do?
> 
> The extra parameter is not that bad, but having to do full emulation
> of all instructions accessing memory, plus the complete IDT handling,
> is going to lead to major ugliness.

Well, I already have some code that basically does this and works, so it
can't be that bad (though it's kinda proof-of-concept-quality)

> Wouldn't it be possible to somehow emulate the kernel driver to make
> the NT version work?  That would be much cleaner.

Maybe... I was just concerned whether you'd like Wine to be subject to
lawsuits or something (reverse engineering, trade secrets, DMCA,
whatever... not that the kernel driver is really complex, though).
Also, I was afraid some games might refuse to work with --winver nt40





More information about the wine-devel mailing list