Von Win32 auf DOS Stack zugreifen

Wohl das A & O in der Windows-Programmierung

Moderatoren: crack, Marwin, Krüsty

Antworten
Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Dienstag 12. Oktober 2004, 22:31

Hallo Nukacola,

ich habe mich mit der Debbuging-API nich nicht beschäftigt. Aber möglicherweise musst du die Werte der Stackregister auslesen, und dann mit der Win-API von dieser Adresse deine Werte auslesen.

Grüße, Marwin

Nukacola
Newbie
Beiträge: 3
Registriert: Mittwoch 13. Oktober 2004, 16:18

Beitrag von Nukacola » Mittwoch 13. Oktober 2004, 16:57

Hallo Marwin,

danke für deine Antwort auch wenn du mir damit nicht helfen konntest.
Ich hab es jetzt hinbekommen. Man muss einfach mit Hilfe der Debug API sich an den DOS-Prozess (DOS-Fenster emuliert durch NTVDM.exe)anhängen. Dann einfach die API-funktionen SetThreadContext und GET und schon kann man den stack ändern. Als Classname für die DOS-Box sollte man im übrigen "ConsoleWindowsClass" benutzen. Bin aber noch auf der Arbeit und hab noch nicht getestet ob alles geht. Da ich schon kurz diese kleine test App
geschrieben habe. Irgendwann muss ich ja auch mal arbeiten.

So könnt ja mal sagen falls ihr irgendwelche fehler seht..

Greetings Nukacola

Code: Alles auswählen

	

mov context.ContextFlags, CONTEXT_CONTROL

invoke GetThreadContext,DBEvent.u.CreateProcessInfo.hThread, addr context

         mov eax,context.regEbp
                        mov stackebp,eax
                        mov eax,context.regEsp
                        mov stackesp,eax          

invoke SetThreadContext,DBEvent.u.CreateProcessInfo.hThread, addr context

invoke MessageBox, 0, addr LoopSkipped, addr AppName, MB_OK+MB_ICONINFORMATION


Antworten