5 Gleiche Startaddys. Filtern? Wie?

03/07/2012 16:49 Crack-wtf#1
Hab mal eine frage.

In autoit ist es ja möglich, threads eines Prozesses zu suspenden, killen etc.

Nun habe ich ca. 5 gleiche threads.
Alle mit der selben Startaddresse.
Bei jedem start eine andere TID.
Und eine davon muss ich Killen.

Wie soll ich das jetzt anstellen?
Sie unterscheiden sich lediglich in der menge des verbrauchten arbeitsspeichers.

Wie soll ich das jetzt rausfiltern, dass ich nicht alle threads kille?
03/07/2012 17:56 Lawliet#2
Wie beendet man denn einen Thread?
03/07/2012 18:13 Crack-wtf#3
Quote:
Originally Posted by Lawliet! View Post
Wie beendet man denn einen Thread?
[Only registered and activated users can see links. Click Here To Register...]

Den thread zu Suspenden tuts auch.

Und hier glaub ich gibts nen OpenSource tool, dass auch über killthread verfügt.

[Only registered and activated users can see links. Click Here To Register...]

Mir gehts halt lediglich darum, den einen thread rauszufiltern Q_Q
03/08/2012 20:16 K1ramoX#4
Mitlerweile gibt es 6 XProc4!0x23390 und einer ist für die Memory Detection zuständig. Mit der UDF in deinem letzten Post bist du schon mal ziemlich nah dran. Diese Threads unterscheiden sich in mehr als nur die Größe des verbrauchten Arbeitsspeichers.

Du könntest zum Beispiel vergleichen wie lange der Thread schon läuft und dir ein kleines Schema scripten das den Thread so rausfiltert. Oder du machst es über die AffinityMask.

Es gibt viele verschiedene Wege die nach Rom führen. Bei weiteren Fragen meld dich was du aber sowieso nicht tun wirst. Ich hab es nur mal erwähnt weil ich keinen Hilfe verweigere ;)
03/09/2012 17:02 Crack-wtf#5
Ist schon logisch, dass man das alles Filtern kann/muss, aber wie will man das anstellen.
Also mir ist nicht bekannt, dass man einfach so abfragen kann, wieviel jeder dieser threads verbraucht etc.

Ich würde es mir so vorstellen.

1. Alle Thread ID's in ein array packen.
2. Alle Mit der einen Startaddy in ein neues array packen.
3. Dann in einer for schleife die checks machen.
4. Die Richtige TID Returnen.
5. Die TID nutzen, um den thread zu suspenden/killen.

Naja im moment beschäftige ich mich nicht wirklich damit, aber könnte mir schon vorstellen, dass es irwie möglich ist.
03/09/2012 17:23 K1ramoX#6
Quote:
Originally Posted by Crack-wtf View Post
Ist schon logisch, dass man das alles Filtern kann/muss, aber wie will man das anstellen.
Also mir ist nicht bekannt, dass man einfach so abfragen kann, wieviel jeder dieser threads verbraucht etc.

Ich würde es mir so vorstellen.

1. Alle Thread ID's in ein array packen.
2. Alle Mit der einen Startaddy in ein neues array packen.
3. Dann in einer for schleife die checks machen.
4. Die Richtige TID Returnen.
5. Die TID nutzen, um den thread zu suspenden/killen.

Naja im moment beschäftige ich mich nicht wirklich damit, aber könnte mir schon vorstellen, dass es irwie möglich ist.
Zu kompliziert. Du liest die Threadbase Adressen aus und packst nur die von Xproc4 in einen Array (Base Adresse: 0x40435540, die brauchst du) und dann machst du mithilfe von der GetThreadTimes API den Rest. Damit kannst du nähmlich die Cycles dir holen ;)
03/09/2012 22:50 Crack-wtf#7
EDIT: Gibt ein entscheidendes Problem.
1. Die UserLaufzeit steigt erst nach ca. 1 minute.
2. Im Context gibt es nur einen Array, der zum Filtern geeignet wäre, aber der ändert sich auch erst nach ca. 1 minute zum richtigen.
...
In C++ würde ich ja einfach nen HardwareBP setzen, und dann suspenden, wäre 99% einfacher, aber wills aus irgendeinem Grund umbedingt in autoit machen :O

EDIT2:
@applecode

GetThreadTimes returnt lediglich Startzeit, endzeit, kernelzeit, und userzeit.

Aber nicht die cyclen.
03/10/2012 11:15 K1ramoX#8
Gut dann nimm die [Only registered and activated users can see links. Click Here To Register...]. Die müsste dir mehr helfen ;)
03/10/2012 12:45 Crack-wtf#9
Sagmal bin ich blind?
Wieso hab ich das übersehn?
03/10/2012 14:27 K1ramoX#10
Tja xD Noch fragen?
03/10/2012 15:56 Crack-wtf#11
No xD

32 & 64 bit bypass komplett in autoit lol'd

Kann closed werden.