Info sur thread ? [Windows] - Programmation
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
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
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 ?
@+