Brauche Hilfe bezüglich Prozess Threads

09/11/2011 14:28 CyberShoxx#1
Moinmoin,

da ich zurzeit wieder arg Lust habe AutoIt Programme zu erstellen bin ich derzeit bei einem Threadsuspender. Dieser hat die Aufgabe die Threads eines Prozesses sich zu holen und dann aus einem Inputfeld die gesuchten Threads rauszusortieren und sie dann auch zu Suspenden. Ich habe bereits darüber viel gegooglet und so einiges gefunden nur war dann immer ein Problem dass entweder die Threadnamen nicht angezeigt wurden oder es wurde in einem Array angelegt so dass es nur mit _ArrayDisplay klappt. Ich möchte aber dass er die richtigen Threads raussucht und nur die speichert. Aber so, dass man sie direkt auch hintereinander Suspenden kann.

Ich zeige euch mal ein Beispiel:

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

Angenommen ich möchte die Threads von cfosspeed.exe auslesen und nur die Threads Namens cfosspeed.exe aussortieren und suspenden, wie mache ich dass?

Ich hoffe ihr könnt mir helfen, es wäre auch sehr nett wenn ihr mir den Source erklären könntet da man von C&P nichts lernt :D

mfg Cyber
09/11/2011 16:25 FichteFoll#2
Zuerst einmal wirst du hier bestimmt etwas finden: [Only registered and activated users can see links. Click Here To Register...] (must-have)

Ich habe gerade mal ein bisschen mit den GUIs rumgespielt, solltest du dir auch mal ansehen. Unter anderem:
_ProcessListThreads
_ThreadUDGetStartAddress
_ProcessUDGetModuleByAddress
Ähnlich:
_ProcessUDGetModuleBaseAddress
_ProcessListModules

Dann testen ob das Modul des Threads = das Basismodul ist (prozessname) und dementprechend das Offset dahintersetzen, wie es bei PE gemacht wird)

Dadurch sollte es möglich sein, die Threads des Basismoduls zu erhalten. Den Zusatz wie bei ntdll.dll wirst du vermutlich nicht so leicht bekommen, aber das wolltest du ja auch gar nicht.

Aber warum sollte etwas nur mit "_ArrayDisplay" funktionieren? Wenn du den Aufbau eines Arrays kennst, kannst du doch ganz normal damit umgehen.

PS: Deine Signatur ist zu lang ;)
09/11/2011 20:07 CyberShoxx#3
Quote:
Originally Posted by FichteFoll View Post
Zuerst einmal wirst du hier bestimmt etwas finden: [Only registered and activated users can see links. Click Here To Register...] (must-have)

Ich habe gerade mal ein bisschen mit den GUIs rumgespielt, solltest du dir auch mal ansehen. Unter anderem:
_ProcessListThreads
_ThreadUDGetStartAddress
_ProcessUDGetModuleByAddress
Ähnlich:
_ProcessUDGetModuleBaseAddress
_ProcessListModules

Dann testen ob das Modul des Threads = das Basismodul ist (prozessname) und dementprechend das Offset dahintersetzen, wie es bei PE gemacht wird)

Dadurch sollte es möglich sein, die Threads des Basismoduls zu erhalten. Den Zusatz wie bei ntdll.dll wirst du vermutlich nicht so leicht bekommen, aber das wolltest du ja auch gar nicht.

Aber warum sollte etwas nur mit "_ArrayDisplay" funktionieren? Wenn du den Aufbau eines Arrays kennst, kannst du doch ganz normal damit umgehen.

PS: Deine Signatur ist zu lang ;)
Erstmal danke für deine Antwort, aber dabei war ich schon. Es hat mir nur absolut nichts gebracht :( Die Offests ändern sich bei meinem Zweck aber ständig. Ich muss mich desshalb absolut nur an den Namen orientieren können. Und mit Arrays kenn ich mich nicht wirklich aus da dass das einzige ist was in AutoIt mir nicht gelingen will. Könntest du mir ein Beispiel machen wenn es dich nicht groß aufhält :D?

Ps, danke für den Tipp mit der Signatur ^-^
09/12/2011 20:54 theboegl#4
für arrays ist das für den Anfang m.E. relativ gut beschrieben: [Only registered and activated users can see links. Click Here To Register...]
Falls du danach noch Fragen hast, stell sie im Thread hier...
BTW: google ist dein Freund und Helfer :D
09/13/2011 21:42 FichteFoll#5
Arrays sind nun wirklich nicht schwierig. Schau dir eines der Tutorials an, da Arrays wirklich wichtig sind (und ich sie liebe <3, oder noch besser assoziative Arrays).

Nun, eigentlich hatte ich heute wirklich etwas anderes vor, aber irgendwie hast du meinen Ehrgeiz geweckt. Dann hatte ich mit den Access-Rights zu kämpfen, weil _ProcessUDGetModuleByAddress einfach zum Erbrechen keinen Wert zurückliefern wollte ...

Ich hoffe, du lernst daraus ;)

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

PS: Als ich meinte, deine Signatur sei zu groß, meinte ich überwiegend das Bild. Schau doch, es muss sogar vom Forum verkleinert werden.
09/15/2011 20:34 CyberShoxx#6
Quote:
Originally Posted by FichteFoll View Post
Arrays sind nun wirklich nicht schwierig. Schau dir eines der Tutorials an, da Arrays wirklich wichtig sind (und ich sie liebe <3, oder noch besser assoziative Arrays).

Nun, eigentlich hatte ich heute wirklich etwas anderes vor, aber irgendwie hast du meinen Ehrgeiz geweckt. Dann hatte ich mit den Access-Rights zu kämpfen, weil _ProcessUDGetModuleByAddress einfach zum Erbrechen keinen Wert zurückliefern wollte ...

Ich hoffe, du lernst daraus ;)

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

PS: Als ich meinte, deine Signatur sei zu groß, meinte ich überwiegend das Bild. Schau doch, es muss sogar vom Forum verkleinert werden.
Erstmal ein riesen danke :D Finde es echt super dass es wenigstens auf Epvp jemanden gibt der in der Lage ist mir zu helfen. Die vom AutoIt Forum wussten selber nix D: Alter erstmal riesen kompliment an dich ^-^

Nur es gibt ein Problem, und das ist bisher das Hauptproblem. Es soll ja dann suspendet werden. Nur es muss ausgefiltert werden. Wenn ich alles suspende läuft der Hauptteil ja nicht mehr. Wäre es möglich dass man anhand der Base Addy, also zB dem 0x303E7. Wenn ich anhand der Base Addy Threads in einem Prozess suspenden könnte wär das Problem perfekt gelöst :D Vielleicht kannst du mir da noch ein letzes mal helfen :D

Ps, die Sigi nehm ich jetzt raus :D
09/15/2011 22:15 FichteFoll#7
Quote:
Originally Posted by -CyberLinK- View Post
Nur es gibt ein Problem, und das ist bisher das Hauptproblem. Es soll ja dann suspendet werden. Nur es muss ausgefiltert werden. Wenn ich alles suspende läuft der Hauptteil ja nicht mehr. Wäre es möglich dass man anhand der Base Addy, also zB dem 0x303E7. Wenn ich anhand der Base Addy Threads in einem Prozess suspenden könnte wär das Problem perfekt gelöst :D Vielleicht kannst du mir da noch ein letzes mal helfen :D
Nun, du suspendierst jeden Thread einzeln, der als Modul den Prozessnamen beinhaltet. PS: Das ist das erste Modul.
Um das zu coden, fehlt mir die Zeit, aber das solltest du eigentlich selbst schaffen. Das meiste habe ich ja schon gemacht.