[Windows] Info sur thread ?

Info sur thread ? [Windows] - Programmation

Marsh Posté le 01-06-2001 à 16:26:12    

Hello
 
quelqu'un sait il si une thread peut voir le TIB (Thread Information Block) des autres threads du même process ? si oui comment accéder à cette info ?
 
@+

Reply

Marsh Posté le 01-06-2001 à 16:26:12   

Reply

Marsh Posté le 02-06-2001 à 07:44:33    

Il y a longtemps que je n'ai pas fait ce genre de manip mais je vais essayé de t'aider.
Le plus simple est que tu trouve le livre de Matt Pietrek "programmation systeme sous w95" (pas certain du titre).
Sous 95 et 98 tu as
thread database=(thread id)XOR(obsfucator)
process database=(process id)XOR(obsfucator)
le TIB que tu cherche commence à l'offset 10h (à vérifier) dans la thread database.
Voilà le code qu'utilise Matt Pietrek  dans son livre
/////////////////////
    tid = GetCurrentThreadId();
     
    __asm {
            mov     ax, fs
            mov     es, ax
            mov     eax, 18h
            mov     eax, es:[eax]
            sub     eax, 10h
            xor     eax,[tid]
            mov     [Unobsfucator], eax
    }  
/////////////////
PPROCESS_DATABASE PIDToPDB( DWORD pid )
{
    return (PPROCESS_DATABASE)(pid ^ Unobsfucator);
}
 
PTHREAD_DATABASE TIDToTDB( DWORD tid )
{
    return (PTHREAD_DATABASE)(tid ^ Unobsfucator);
}
 
voilà bonne bidouille

Reply

Marsh Posté le 02-06-2001 à 13:02:01    

merci de ta réponse.
J'ai également trouvé des articles parlant d'une solution similaire (en partant du process id)
 
DWORD GetObsfucator()
{
  DWORD _dw = 0, _dwCurProcId = GetCurrentProcessId();
__asm {
 mov eax,dword ptr fs:[18h]  
 mov eax,dword ptr [eax+30h]  
 mov ebx,eax
 xor ebx,dword ptr [_dwCurProcId]
 mov dword ptr [_dw],ebx  };
 
  return _dw;
}
malheureusement, je suis sous NT.
Et le dword en 30h (ptr process database)n'est pas affecté pour les TIB sous Nt.
 
Mais peut etre ta solution fonctionnera :) , bien que je trouve le sub eax,10h assez strange.
 
en tout cas merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed