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 CreateRemoteThread in einem 64-Bit Prozess möglich? (https://www.delphipraxis.net/112059-createremotethread-einem-64-bit-prozess-moeglich.html)

Cyberstorm 14. Apr 2008 14:44


CreateRemoteThread in einem 64-Bit Prozess möglich?
 
hi,

wollte mal fragen ob es möglich ist aus einem 32-bit prozess (delphi) einen thread in einem 64-bit prozess zu erzeugen.

bei mir funzt es leider nicht.
GetLastError gibt nach dem fehlgeschlagenem aufruf von CreateRemoteThread "5" zurück (ich glaube das bedeutet Zugriff verweigert).
DebugPrivs wurden vorher gesetzt + mit 32-bit prozessen funzt der code.

danke im vorraus.
grüße
konrad

Luckie 14. Apr 2008 14:49

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Wo ist dein Text?

Namenloser 14. Apr 2008 14:52

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
kein kasten...

Cyberstorm 14. Apr 2008 14:56

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von NamenLozer
kein kasten...

? was soll mir das sagen?

Bernhard Geyer 14. Apr 2008 14:59

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Ich sage nein. Denn dazu müsste es auch möglich sein ohne weiteres 32-Bit-DLL's in 64-Bit Prozessen zu verwenden. Und das ist ähnlich kompliziert wie zur "guten Alten Zeit" beim wechsel von 16 auf 32-Bit.

MrKnogge 14. Apr 2008 14:59

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Er hatte vermutlich das gleiche wie Luckie geschrieben.

Cyberstorm 14. Apr 2008 15:01

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Bernhard Geyer
Ich sage nein. Denn dazu müsste es auch möglich sein ohne weiteres 32-Bit-DLL's in 64-Bit Prozessen zu verwenden. Und das ist ähnlich kompliziert wie zur "guten Alten Zeit" beim wechsel von 16 auf 32-Bit.

Das kann nicht so schwer sein.
wenn ich mir die geladenen module der 64-Bit Prozesse so anschaue sind da bei fast jedem prozess auch 32-Bit dll's dabei.
also scheint es da keine probleme zu geben?!

MrKnogge 14. Apr 2008 15:04

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Abwärts und aufwärts ist schon ein Unterschied.

Cyberstorm 14. Apr 2008 15:07

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von MrKnogge
Abwärts und aufwärts ist schon ein Unterschied.

ja, natürlich.
wollte nur anmerken, dass
Zitat:

Zitat von Bernhard Geyer
Denn dazu müsste es auch möglich sein ohne weiteres 32-Bit-DLL's in 64-Bit Prozessen zu verwenden.

kein Argument ist, da dies funzt.

Bernhard Geyer 14. Apr 2008 15:11

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Cyberstorm
Zitat:

Zitat von Bernhard Geyer
Denn dazu müsste es auch möglich sein ohne weiteres 32-Bit-DLL's in 64-Bit Prozessen zu verwenden.

kein Argument ist, da dies funzt.

Wie checkst du diese das 1/3 der DLL's eines normalen 64-Bit Programmes 32-Bit DLL's sind?

Cyberstorm 14. Apr 2008 15:16

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Bernhard Geyer
Wie checkst du diese das 1/3 der DLL's eines normalen 64-Bit Programmes 32-Bit DLL's sind?

1/3 war ein bisschen hoch gegriffen, hab den post editiert. aber ein paar sinds halt. mit dem process explorer von sysinternals.

Bernhard Geyer 14. Apr 2008 15:27

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Cyberstorm
1/3 war ein bisschen hoch gegriffen, hab den post editiert. aber ein paar sinds halt. mit dem process explorer von sysinternals.

Ist die verwendet Version 64-Bit-Fit oder wird sie u.U. auch durch das virtuelle Dateisystem von (Vista-) 64-Bit Windows verwirrt :gruebel:

Cyberstorm 14. Apr 2008 15:34

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Bernhard Geyer
Ist die verwendet Version 64-Bit-Fit oder wird sie u.U. auch durch das virtuelle Dateisystem von (Vista-) 64-Bit Windows verwirrt :gruebel:

Sie ist 64-Bit kompatibel.
Process Explorer startet auf 64 Bit Systemen selbst einen zusätzlichen 64-Bit Prozess (die zusätzliche exe wird aus dem Ursprungsprogramm temporär endpackt und gestartet). Kann man übrigens prima im Prezess Explorer sehen :P.

wido 14. Apr 2008 16:27

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Du weißt aber schon, daß alle DLLs in C:\Windows\System32 in Wirklichkeit 64 Bit DLLs sind, oder? Die DLLs in SysWOW64 sind 32 Bit DLLs. Und wenn Du mal genau hinschaust im Process Explorer wirst Du feststellen, daß in 64 Bit Prozessen nicht eine einzige 32 Bit DLL enthalten ist, da es mit Standardmitteln technisch schlichtweg unmöglich ist eine 32 Bit DLL in einem 64 Bit Prozess zu laden. Umgekehrt trifft übrigens das selbe zu, wobei man beachten muss, daß der WOW64 Layer aus einigen 64 Bit DLLs besteht. Entsprechend gibts in jedem 32 Bit Prozess zwar ein paar 64 Bit DLLs, aber eine eigene 64 Bit DLL zu laden gestaltet sich relativ schwierig.

Zitat:

Zitat von Bernhard Geyer
Ich sage nein. Denn dazu müsste es auch möglich sein ohne weiteres 32-Bit-DLL's in 64-Bit Prozessen zu verwenden.

Wieso müsste es dafür notwendig sein?

Cyberstorm 14. Apr 2008 17:09

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von wido
Du weißt aber schon, daß alle DLLs in C:\Windows\System32 in Wirklichkeit 64 Bit DLLs sind, oder? Die DLLs in SysWOW64 sind 32 Bit DLLs.

ja!
Zitat:

Zitat von wido
Und wenn Du mal genau hinschaust im Process Explorer wirst Du feststellen, daß in 64 Bit Prozessen nicht eine einzige 32 Bit DLL enthalten ist, da es mit Standardmitteln technisch schlichtweg unmöglich ist eine 32 Bit DLL in einem 64 Bit Prozess zu laden.

Zum Bsp. bei dem Ati-Kram:
Prozess: CCC.exe (64-Bit)
Beschreibung: Catalyst Control Centre: Host application

die erste (alphabetisch) geladene dll: "ACE.Graphics.DisplaysManager.Shared.dll"
ganz unten bei den eigenschaften der dll im process explorer unter "image" steht "32-Bit".
bei den ganzen geladenen M$ dll's (aus dem System32 Ordner ;-) ) steht 64-Bit.

lügt das prog?
lügt die ati dll?
hab ich was komplett falsch verstanden?

habe die ati .dll mal angehangen, weil ich keine ahnung habe, wie ich überprüfen kann, ob das wirklich eine 32-bit dll ist.

Khabarakh 14. Apr 2008 18:47

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Die ist weder 32 noch 64-Bit, sondern eine .Net-Dll. Wird also auf deinem System just in time für 64-Bit kompiliert - damit würde ich es auf den ProcessExplorer schieben, auch wenn ich nicht viel Ahnung von den CLR-Interna habe.

wido 14. Apr 2008 19:02

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
Zitat:

Zitat von Cyberstorm
lügt das prog?

Nein.

Zitat:

Zitat von Cyberstorm
lügt die ati dll?

Nein.

Zitat:

Zitat von Cyberstorm
hab ich was komplett falsch verstanden?

Ja. Du verwechselst Native Code mit .NET Code. Die angehängte Datei ist defacto ein .NET Assembly und keine echte (im Sinne von Native) DLL.

Cyberstorm 14. Apr 2008 22:58

Re: CreateRemoteThread in einem 64-Bit Prozess möglich?
 
alles klar.
danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz