debugging longman dictionary

Eric Pouech eric.pouech at wanadoo.fr
Mon Mar 18 15:58:35 CST 2002


> - it also tries to read/write to the debug registers. this produces an
> unhandled exception. should be trivial to write an exception handler to
> support that (right ?)
how does it do the writing exactly ? (I'd suspect more the program wants
to catch itself a watchpoint)

> bool detect_debugger_from_TIB
> {
>         char *pTIB;
>         asm ( "mov %%fs:0x18, %", "=g"(pTIB) );
>         if ( pTIB[0x20] == 0 )
>                 return FALSE;
>         else
>                 return TRUE;
> }
fs:0x18 points in memory to the TEB structure
and offset 0x20 (from thread.h) says:
	20 Process id (win95: debug context)
so I assume you run it on Win9x, and got it tested this way
(I wouldn't be surprised that under nt it did test dword 0x64 and/or
0x68)

basically, wine shouldn't be too far away for correctly allowing this

the debug register stuff seems to be the showstopper right now

A+



More information about the wine-devel mailing list