AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SetThreadContext - Rechte besorgen (Prozess debuggen)
Thema durchsuchen
Ansicht
Themen-Optionen

SetThreadContext - Rechte besorgen (Prozess debuggen)

Ein Thema von Zacherl · begonnen am 2. Mär 2007 · letzter Beitrag vom 3. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 2. Mär 2007, 23:54
Hi,

ich möchte Set/GetThreadContext für den Thread eines fremden Prozesses aufrufen. Dies schlägt nur leider immer fehl. Wie kann ich mir die erforderlichen Rechte besorgen?

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 00:23
PSDK lesen hilft:
Zitat:
You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext.
If you call GetThreadContext for the current thread, the function returns successfully; however, the context returned is not valid.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 11:42
Mhh sollte aber gehen, da mein zweites Programm CreateProcess mit CREATE_SUSPENDED verwendet. Also sind doch eigentlich alles Threads suspendiert.

Dann bekomme ich per Windows Message das Handle des Threads, was ich aus ProcessInfo auslese und versuche GetThreadContext aufzurufen. Das schlägt allerdings fehl.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#4

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 12:01
Du solltest vieleicht erstmal die grundlagen lernen und dir dein "project" nicht zusammen kopieren ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 12:14
Zitat von Florian Bernd:
und versuche GetThreadContext aufzurufen. Das schlägt allerdings fehl.
Du hast mittlrweile über tausend Posting. Du sollstest mittleweile wiessen das "geht nicht" oder ähnliche Fehlerbeschreibungen wenig hilfreich sind.

Und ich habe dir oben schon mal gesagt, dass man das PSDK lesen soll:
Zitat:
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#6

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 12:59
Win32.API hat recht

CreateProcessA liefert ProcessID // ProcessH // ThreadID // ThreadH
Mit GetThreadContext(ThreadH) sollte es gehen, ansonsten OpenThread mit der ThreadID versuchen.
Btw. machste bei CREATE_SUSPENDED nen System Breakpoint, änder danach also das EIP Register blos nicht ab.
  Mit Zitat antworten Zitat
3. Mär 2007, 13:02
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "Windows API / MS.NET Framework API" verschoben.
Kein Netzwerkproblem
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 13:08
Ist ja gut, ist ja gut .. ich kopiere mir nichts zusammen ..

@Luckie: Das PSDK habe ich gelesen, allerdings hilft mir das auch nicht weiter, wenn der Aufruf komplett fehlschlägt. Ich hätte den Fehler vielleicht etwas genauer beschreiben können, sorry. Das Problem ist, dass der Aufruf von GetThreadContext sofort eine AV auslöst.

@Win32.API: Wie kommst du drauf?

@brechi: Nein, hat er nicht .. Ich weiß, dass CreateProcess diese Werte liefert. Führe ich ein einem Testprojekt CreateProcess aus und nehme hThread für GetThreadContext, dann funktioniert auch alles.
Erstelle ich in einem zweiten Programm allerdings mit CreateProcess einen Prozess und übergebe hThread an mein erstes Programm und rufe darin GetThreadContext auf, dann schlägt dies in einer AV fehl. OpenThread mit der ThreadID habe ich auch probiert. Der Fehler bleibt allerdings gleich ..
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 13:13
1) Sollte GetThreadContext nie crashen sondern nur failen und dann mit GetLastError der Fehler ausgelesen werden können.
2) Ist es klar dass GetThreadContext nicht mit hThread aus einem anderen Thread funzt. (Grundlagen?)

=> Du machst was mit GetThreadContext falsch, z.b. setzt die größte von TContext nicht oder setzt nicht die Flags von dem was ausgelesen werden soll.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: SetThreadContext - Rechte besorgen (Prozess debuggen)

  Alt 3. Mär 2007, 13:18
Zitat von brechi:
1) Sollte GetThreadContext nie crashen sondern nur failen und dann mit GetLastError der Fehler ausgelesen werden können.
2) Ist es klar dass GetThreadContext nicht mit hThread aus einem anderen Thread funzt. (Grundlagen?)

=> Du machst was mit GetThreadContext falsch, z.b. setzt die größte von TContext nicht oder setzt nicht die Flags von dem was ausgelesen werden soll.
1) Tut es leider aber .. das ContextFlag habe ich gesetzt, allerdings vergessen die Größe vorher festzulegen
2) Ja, deshalb habe ich dort doch auch den Fehler vermutet. Wenn man debug Rechte für einen Prozess besitzt kann man IMHO auch GetThreadContext mit Thread dieses Prozesses aufrufen.

Vielen Dank für eure Hilfe

(Was ich allerdings immer noch komisch finde, ist, dass mein Code funktioniert, wenn ich CreateProcess im selben Programm aufrufe. Ohne vorher die Größe von TContext zu setzen ..)
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz