Thread blocken?

09/05/2011 22:34 Omdi#1
Hey.

Ich würde gerne wissen mit welchen Funktionen man einen Thread blocken/beenden kann.
Bisherige Funktionen die ich gefunden habe :

CloseHandle
ExitThread
ExitProcess

Gibt es noch weitere die ich hier nicht aufgelistet habe?

MfG Omdihar
09/05/2011 22:35 SmackJew#2
CreateThread(Ex) hooken.
09/05/2011 22:38 Omdi#3
Ich erklär mein Problem mal etwas genauer.
Ich mache eine DLL .
Injecte ich in das Spiel.
Und nach einpaar Sekunden wird der Thread beendet.
09/05/2011 22:40 link#4
SuspendThread und TerminateThread.
CloseHandle sorgt nur dafür, dass das Objekt hinterher gelöscht wird, blockiert oder beendet aber nichts.
Und unter ExitProcess verstehe ich auch etwas Anderes..
09/07/2011 17:31 Tyrar#5
der thread kann auch über die ntapi versteckt werden, könnte bei vielen sachen schon helfen!
09/08/2011 18:46 Omdi#6
Quote:
Originally Posted by HeavyHacker View Post
der thread kann auch über die ntapi versteckt werden, könnte bei vielen sachen schon helfen!
Und wie stell ich das an?
Also den Thread verstecken.
09/09/2011 15:51 Shadow992#7
Quote:
Originally Posted by Omdihar View Post
Ich erklär mein Problem mal etwas genauer.
Ich mache eine DLL .
Injecte ich in das Spiel.
Und nach einpaar Sekunden wird der Thread beendet.
Wenn der PE Header zur Laufzeit gelöscht wird, dann kann man, soweit ich weiß, auch keine Threads mehr starten/beenden usw.
Wenn ich mich nicht irre.
09/09/2011 16:45 Omdi#8
Quote:
Originally Posted by Shadow992 View Post
Wenn der PE Header zur Laufzeit gelöscht wird, dann kann man, soweit ich weiß, auch keine Threads mehr starten/beenden usw.
Wenn ich mich nicht irre.
Wie löscht man den Header zur Laufzeit :D ?

Danke für eure Hilfe
09/09/2011 21:29 SmackJew#9
Quote:
Originally Posted by Omdihar View Post
Wie löscht man den Header zur Laufzeit :D ?

Danke für eure Hilfe
[Only registered and activated users can see links. Click Here To Register...]
09/10/2011 23:40 Shadow992#10
Quote:
Originally Posted by Omdihar View Post
Wie löscht man den Header zur Laufzeit :D ?

Danke für eure Hilfe
Um die Antwort kurz komplett zu halten, so geht das z.b. in C/C++:
PHP Code:
inline void ErasePEHeaderFromMemory()
{
    
DWORD OldProtect 0;

    
// Get base address of module
    
char *pBaseAddr = (char*)GetModuleHandle(NULL);

    
// Change memory protection
    
VirtualProtect(pBaseAddr4096// Assume x86 page size
            
PAGE_READWRITE, &OldProtect);

    
// Erase the header
    
ZeroMemory(pBaseAddr4096);

09/11/2011 16:53 Tyrar#11
Quote:
Originally Posted by Shadow992 View Post
Um die Antwort kurz komplett zu halten, so geht das z.b. in C/C++:
PHP Code:
inline void ErasePEHeaderFromMemory()
{
    
DWORD OldProtect 0;

    
// Get base address of module
    
char *pBaseAddr = (char*)GetModuleHandle(NULL);

    
// Change memory protection
    
VirtualProtect(pBaseAddr4096// Assume x86 page size
            
PAGE_READWRITE, &OldProtect);

    
// Erase the header
    
ZeroMemory(pBaseAddr4096);

sollte es nich ausreichen die ersten 4 bytes zu 0en?
09/12/2011 22:14 MrSm!th#12
Wenn es das Spiel ist, das ich vermute, reicht ein Hook von OpenThread

Den Module Header aus dem Speicher zu löschen, wird nicht verhindern, dass der Thread beendet wird.
09/17/2011 17:14 Shadow992#13
Quote:
Originally Posted by MrSm!th View Post
Wenn es das Spiel ist, das ich vermute, reicht ein Hook von OpenThread

Den Module Header aus dem Speicher zu löschen, wird nicht verhindern, dass der Thread beendet wird.
Die Antwort war auf die Frage bezogen: "Wie können Threads verhindert/abgebrochen werden"
Denn ist der PE-Modul Header weg, lassen sich keine Threads mehr starten, also eine sehr schöne Möglichkeit seine Programme vorm Debuggen zu schützen.
Ob die bereits laufenden Threads dann abgebrochen werden, darüber bin ich mir nicht sicher.
09/18/2011 03:33 Tyrar#14
Quote:
Originally Posted by Shadow992 View Post
Die Antwort war auf die Frage bezogen: "Wie können Threads verhindert/abgebrochen werden"
Denn ist der PE-Modul Header weg, lassen sich keine Threads mehr starten, also eine sehr schöne Möglichkeit seine Programme vorm Debuggen zu schützen.
Ob die bereits laufenden Threads dann abgebrochen werden, darüber bin ich mir nicht sicher.
meines wissens nach werden die laufenden nicht unterbrochen, nur alles wo es darum geht infos aus/in den header zu lesen/schreiben failed ;)

was z.b. ollydbg angeht gibts dafür auch genug plugins um noch attachen zu können wenn der header gelöscht wurde! (wenn man sich vor nem debugger schützen will sind tls callbacks + exceptions ne schöne sache)
09/20/2011 12:52 MrSm!th#15
Quote:
Originally Posted by Shadow992 View Post
Die Antwort war auf die Frage bezogen: "Wie können Threads verhindert/abgebrochen werden"
Denn ist der PE-Modul Header weg, lassen sich keine Threads mehr starten, also eine sehr schöne Möglichkeit seine Programme vorm Debuggen zu schützen.
Ob die bereits laufenden Threads dann abgebrochen werden, darüber bin ich mir nicht sicher.
Man kann den Thread vorher erstellen. Man kann den Header wiederherstellen. Es gibt noch die NT Api. Und S4 macht es nicht bzw überhaupt die wenigsten Spiele ;O