Wine talk on FOSDEM

Chris Wulff crwulff at rochester.rr.com
Mon Feb 16 20:59:30 CST 2009


On Mon, 2009-02-16 at 00:16 +0000, Ricardo Filipe wrote:
> 
> 
> 2009/2/15 Stefan Dösinger <stefandoesinger at gmx.at>
>         Am Sonntag, 15. Februar 2009 23:03:27 schrieb Marcus Meissner:
>         > Hi,
>         
>         > And my slides are here (feel free to reuse):
>         >
>         http://files.opensuse.org/opensuse/en/0/05/Fosdem2009-wine.pdf
>         
>         Just skimmed over them out of curiosity, found one mistake:
>         GameGuard does not
>         work because it is a rootkit that doesn't work with Wine by
>         design.
>         
>         
> yeah i was just looking at that too...
> all those online protection libraries still don't work, which i think
> is the next step we have to take on games :p
> 
> also the game wasn't heroes of might and magic III , it was dark
> messiah :P
> 
> the german accent gives the presentation a new horizon :D good job. :)

  At least for the HackShield system there isn't all that much missing.
It is mainly a double handful of functions in ntoskrnl.exe and a few
other bits.

  I've gotten that one working at least in the Ragnarok Online 2 game
(with a number of less than ideal bits.) There are probably other
variations on things that need to happen in other games.

  Here's the short list of what's missing for this one at least. Maybe
this can get somebody started though I don't ever seem to have enough
time to clean this up and get it in for a real patch.

  * Proper handling of (what I think is) shared memory. There are some
things that get filled into the Peb (reactos does this as part of the
csrss process I think but I'm not really sure what all is needed.)
Filling in a couple blobs of empty data before the driver ioctls was
enough to make hackshield happy but this needs to go somewhere else.

  * A pile of functions that just need to be properly implemented
(kernel Mdl, WorkItem, Semaphore, Event, etc.)

  * Possibly some way to prioritize "driver" threads above those of the
application. This one is a bit hard given the way that wine works. This
may or may not actually work ok once the kernel locking objects work
right (or it could be the app expects the priority to take care of it.)
In this patch I am suspending and resuming some threads in the
application because it crashes if some driver activities don't complete
first.

  * There are still some crashes in the hackshield driver (caught and
ignored by the try/catch block around the ioctl dispatch) that need to
be investigated and fixed for it to be really fully functional as
opposed to hacked up.

 As I said, the attached patch gets it working but still needs plenty of
work. A bunch of the datatypes in wdm.h may actually belong someplace
else (like wininternals.h.) The locking function implementations are
wrong too as they are just abusing some of the fields to try to call
existing wine functions.

  -- Chris Wulff
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Bits-needed-to-get-hackshield-working-in-RO2.patch
Type: text/x-patch
Size: 0 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20090216/eff0ee10/attachment-0001.bin 


More information about the wine-devel mailing list