Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ZwCreateSection / ZwMapViewOfSection - Beschreibung (https://www.delphipraxis.net/127180-zwcreatesection-zwmapviewofsection-beschreibung.html)

Zacherl 8. Jan 2009 22:43


ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Hey,

ich beschäftige mich grade mit einigen Nativen Windows APIs zur Prozesserzeugung. Leider verstehe ich den Zweck oder besser gesagt die Verwendung der beiden genannten APIs noch nicht richtig. Meine Frage an euch:

Kann mir jemand an einem Schnipsel Pseudo Code zeigen, wie man in eine mit ZwCreateSection erzeugte Image Section mit ZwMapViewOfSection Daten (beispielsweise eine EXE Section) in den Speicher mapt?

Viele Grüße
Zacherl

Luckie 8. Jan 2009 23:09

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
ZW als Präfix ist eine Zeichen dafür, dass es sich um undokumentierte API Funktionen handelt. Eventuell findest du hier was: http://undocumented.ntinternals.net/

ErazerZ 8. Jan 2009 23:14

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Ähm ja.. oder gleich hier http://msdn.microsoft.com/en-us/library/ms804369.aspx

Luckie 8. Jan 2009 23:15

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Oh, dann ist das eine Funktion aus dem DDK. Ich glaube, dann wird das nichts mit Delphi.

ErazerZ 8. Jan 2009 23:26

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von Luckie
Oh, dann ist das eine Funktion aus dem DDK. Ich glaube, dann wird das nichts mit Delphi.

Warum nicht? Ich hab schon öfters Native APIs (Prozesse, Threads erstellen, Speicher allozieren etc.) unter Delphi ohne Probleme verwendet.

mkinzler 9. Jan 2009 05:38

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Diese Diskussion hatten wir erst letztens

nicodex 9. Jan 2009 07:55

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von Zacherl
Kann mir jemand an einem Schnipsel Pseudo Code zeigen, wie man in eine mit ZwCreateSection erzeugte Image Section mit ZwMapViewOfSection Daten (beispielsweise eine EXE Section) in den Speicher mapt?

Um damit was zu tun?

http://msdn.microsoft.com/en-us/library/ms680353(VS.85).aspx

Luckie 9. Jan 2009 08:53

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von ErazerZ
Zitat:

Zitat von Luckie
Oh, dann ist das eine Funktion aus dem DDK. Ich glaube, dann wird das nichts mit Delphi.

Warum nicht? Ich hab schon öfters Native APIs (Prozesse, Threads erstellen, Speicher allozieren etc.) unter Delphi ohne Probleme verwendet.

Ich dachte nur, da es sich um eine Funktion aus dem DDK handelt, dass da noch entsprechende Headerdateien nötig wären. Und die Headerdateien aus dem DDK sind ja nicht unbedingt so ohneweiteres nach Delphi zu übersetzen.

sirius 9. Jan 2009 09:01

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Ähm, und wie kommst du an die zwxxx-Funktionen ran?

nicodex 9. Jan 2009 11:22

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von sirius
Ähm, und wie kommst du an die zwxxx-Funktionen ran?

Wie sonst auch. Im Benutzermodus sind die Einsprungpunkte für NtXxx und ZwXxx (wenn es beide gibt) ohnehin identisch.

function NtXxx; external 'ntdll.dll';

sirius 9. Jan 2009 11:34

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von nicodex
Zitat:

Zitat von sirius
Ähm, und wie kommst du an die zwxxx-Funktionen ran?

Wie sonst auch. Im Benutzermodus sind die Einsprungpunkte für NtXxx und ZwXxx (wenn es beide gibt) ohnehin identisch.
function NtXxx; external 'ntdll.dll';

Eben. Man nimmt im Usermode die nt, weil diese die zw aufruft (und in den Kernelmode switched). Nur ich fragte, weil Zacherl explizit die zw aufrufen will/tut.

nicodex 9. Jan 2009 12:21

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Ich frage nicht umsonst nach dem eigentlichen Zweck, da sich die meisten Dinge mit "normalen" API-Funktionen umsetzen lassen.

ErazerZ 9. Jan 2009 13:15

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

ich beschäftige mich grade mit einigen Nativen Windows APIs zur Prozesserzeugung.
Das will er machen. Einen Prozess erzeugen bzw "steuern".

nicodex 9. Jan 2009 14:37

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Zitat:

Zitat von ErazerZ
Zitat:

ich beschäftige mich grade mit einigen Nativen Windows APIs zur Prozesserzeugung.
Das will er machen. Einen Prozess erzeugen bzw "steuern".

Na dann viel Spaß beim Anmelden des Prozesses/Threads beim Windows-Subsystem. Das ist nicht so einfach wie er sich das vorstellen mag.
Es gibt zwar einen "Trick" für eingebundene Ressourcen (mit Nebeneffekten). Aber ob der noch funktioniert (und wie lange), ist eine andere Frage.

Es gibt andere Wege. Und mir ist nicht klar, warum es unbedingt eine native API sein muss. Bis das nicht geklärt ist, lohnt sich das Nachdenken über die Frage nicht.

Luckie 9. Jan 2009 14:47

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Eventuell ist es auch einfach nur Forscherdrang. Ich habe von jemanden gehört, der hat mal mit Delphi einen Treiber geschrieben aus Neugier (Ich denke, das war der Grund). ;)

Zacherl 9. Jan 2009 15:23

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Hey Leute, erstmal danke für eure Antworten! Zu den Hintergründen: Luckie hat schon Recht, dass es mir mehr ums Verständniss geht, als darum irgendwas Praktisches umzusetzen. Ob jetzt die Zw oder Nt Funktionen verwendet werden ist ja recht egal im Usermode, wie auch schon erwähnt wurde. Die Prototypen habe ich in der JEDI Native API Library gefunden.

Mir geht es erstmal darum zu verstehen, wie die APIs verwendet werden müssen. Ich habe mal in meiner eigenen Anwendung ZwCreateSection gehookt und bekomme nun auch mit, wenn diese durch z.b. CreateProcess ausgelöst wird.

Gut .. nun hat der Prozess also eine Section erzeugt. Nur was passiert nun damit? Soweit ich das verstanden habe, wird in diese Section irgendwie per ZwMapViewOfSection der eigentliche Code der Anwendung in den Speicher gemappt.

Dachte ihr hättet vielleicht eine einfache Beschreibung davon, wie das ganze tatsächlich abläuft, ob z.b. für jede Section in der EXE Datei eine ImageSection mit ZwCreateSection erzeugt wird, etc.

Gruß Zacherl

ErazerZ 9. Jan 2009 20:13

Re: ZwCreateSection / ZwMapViewOfSection - Beschreibung
 
Prozess erstellen mittels Native APIs hab ich immer so gemacht, falls dir das weiterhilft..
NtCreateFile
NtCreateProcess
NtQuerySection
NtAllocateVirtualMemory
NtProtectVirtualMemory
NtCreateThread
NtQueryInformationProcess
RtlCreateProcessParameters
CsrClientCallServer
NtResumeThread
NtClose ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 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