Entwickler-Ecke
Windows API - Stack
AHT - Fr 01.02.08 20:07
Titel: Stack
Ich habe einen Pointer auf das erste Element eines Stacks eines fremden Threads und die maximale Größe dieses Stacks. Komme ich irgendwie an einen Pointer auf das letzte Element?
(NT basierendes OS - 2000/XP/Vista)
Allesquarks - Fr 01.02.08 22:24
Ich weiß zwar nicht wie man daran kommt. Die Frage ist aber auch wann du dies möchtest. Denn sobald dieser andere Thread mal wieder Rechenzeit bekommt ist deine Information nichtig. Und dass es Grundsätzlich geht sieht man ja an diversen Debuggern! Aber den genauen Befehl kann ich dir nicht sagen.
AHT - Sa 02.02.08 11:48
Allesquarks hat folgendes geschrieben: |
| Die Frage ist aber auch wann du dies möchtest. Denn sobald dieser andere Thread mal wieder Rechenzeit bekommt ist deine Information nichtig. |
Das ist eigentlich kein Problem, Threads kann man anhalten. Zu dem Zeitpunkt, zu dem ich die Info benötige, bestehen diesbezüglich sogar noch weniger Probleme. Im Prinzip benötige ich die Adresse des ESP Registers eines fremden Threads - hat noch jemand Ideen, wie man an diese Adresse gelangen könnte? Benötige keinen Code - etwas "Brainstorming" würde mir vielleicht schon reichen...
Jann1k - Sa 02.02.08 12:35
Könnte man den Stack nicht umschichten auf einen anderen Stack, von diesem dann das erste Element bearbeiten (wäre ja das letzte des ersten Stacks) und dann wieder auf den ursprünglichen Stack umschichten?
BenBE - Sa 02.02.08 12:52
Was ist bei Dir das erste Element?
Ich nehm mal an:
erstes Element = Top Of Stack
letztes Element = Bottom of Stack
Wenn dem so ist: Versuch mal, ob Dir GetThreadContext was hilft. Damit kannste die Register eines fremden Threads direkt auslesen; Rechte vorausgesetzt. Willst wohl ne Art Stack-Parser für nen Call-Stack schreiben?
HTH.
AHT - Sa 02.02.08 13:06
BenBE hat folgendes geschrieben: |
Was ist bei Dir das erste Element?
Ich nehm mal an:
erstes Element = Top Of Stack
letztes Element = Bottom of Stack
Wenn dem so ist: Versuch mal, ob Dir GetThreadContext was hilft. Damit kannste die Register eines fremden Threads direkt auslesen; Rechte vorausgesetzt. Willst wohl ne Art Stack-Parser für nen Call-Stack schreiben?
HTH. |
Besten Dank, auf deine Hilfe habe ich gehofft. Das hilft mir bestimmt weiter - mir fehlt aber die CONTEXT Struktur. Hast du einen Link?
AHT - Sa 02.02.08 13:30
OK, ich habe, glaube ich, was gefunden...
Besten Dank, BenBe - hatte schon die Vermutung, dass man über GetThreadContext an die register kommen müßte, war mir aber nicht sicher. Werde mal schauen, ob ich jetzt weiter komme!
Gruß
AHT
AHT - Sa 02.02.08 14:29
BenBE hat folgendes geschrieben: |
*G* Seh grad: MSDN spart hier mit Infos ... |
Auf diese "Sparsamkeit" bin ich bereits gestern gestoßen - deshalb meine Frage hier. Wäre auch sehr merkwürdig, wenn Microsoft über dieses Thema mehr als nötig preisgeben würde.
Nochmals besten Dank für deine Suchtipp - über die Headerdateien von MASM (NTDDK.INC) bin ich auf diesen Link gestoßen - vielleicht hilft der dem ein oder anderen auch:
http://www.joachimrohde.com/cms/xoops/modules/articles/article.php?id=87
BenBE - Sa 02.02.08 15:39
Dachte eigentlich, Du hättest bei den Dingen, die du machst, sowieso das PSDK bei Dir rumliegen (DL-Link auf Nachfrage) Da steht die Struktur nämlich auf jeden Fall drin. Und das wäre meine nächste Anlaufstelle nach MSDN gewesen (wenn ich an meinem Dev-Rechner säße).
Platform-SDK gibt's unter
http://www.microsoft.com/msdownload/platformsdk/ zum DL ... ACHTUNG: >1GB nach Install!!!
AHT - Sa 02.02.08 16:14
BenBE hat folgendes geschrieben: |
Dachte eigentlich, Du hättest bei den Dingen, die du machst, sowieso das PSDK bei Dir rumliegen
|
DDK ja, PSDK nicht. Desweiteren noch das KmdKit für ASM und eine kleinere Doku über Native API Funktionen, ohne die ich eigentlich fast nirgendwo mehr auskomme.
Habe nur alte Rechner mit sehr kleinen Festlatten und finde auch meist in den großen M$ Downloads nicht das, was ich benötige.
AHT - Sa 02.02.08 17:06
OK, Code fertig und sieht gut aus - die mir noch fehlenden Adressen habe ich jetzt.
BenBE hat folgendes geschrieben: |
Willst wohl ne Art Stack-Parser für nen Call-Stack schreiben?
HTH. |
Ich möchte den Stack des Threads eines fremden Prozesses so beeinflussen, dass dieser Threads (von außen von mir gesteuert) eine
beliebige API ausführt. Bin auf Kapertour... :lol:
BenBE - Sa 02.02.08 17:32
Siehe CreateRemoteThreadX in der uallCollection :P
AHT - Sa 02.02.08 18:02
BenBE hat folgendes geschrieben: |
| Siehe CreateRemoteThreadX in der uallCollection :P |
Siehe
TNT [
http://www.delphi-forum.de/topic_TNT_80254.html].
Ich kann mir die Collection im Augenblick nicht ansehen, aber ich denke, ich benutze in TNT die gleiche Technik, bloss mit einer anderen Programmiersprache.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!