AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi 32bit Service auf 64bit Platform
Thema durchsuchen
Ansicht
Themen-Optionen

32bit Service auf 64bit Platform

Ein Thema von Klaus01 · begonnen am 23. Okt 2010 · letzter Beitrag vom 24. Dez 2010
Antwort Antwort
Seite 2 von 2     12   
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#11

AW: 32bit Service auf 64bit Platform

  Alt 24. Okt 2010, 16:41
Für diese ausführliche und m.E. auch plausible Antwortmühe gibt es von mir ganz einfach nur ein dickes Dankeschön!

Geändert von Delphi-Laie (24. Okt 2010 um 16:43 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#12

AW: 32bit Service auf 64bit Platform

  Alt 23. Dez 2010, 12:54
Hallo Assarbad, entschuldige bitte, daß ich diese angestaubte Diskussion noch einmal aufwärme!

Irgendetwas muß an diesen Prozessen anders sein (Ring 0?); ich nenne sie, wohl nicht ganz korrekt, Systemprozesse.
Sie laufen in der Service-Session (üblicherweise 0), welche ab Windows Vista strenger vom Rest des Systems abgetrennt ist. Außerdem laufen sie oft unter anderen Benutzerkonten.
Mir ist etwas erstaunliches aufgefallen: Um in Windows 7 64 Bit (vermutlich auch in anderen 64-Bit-Windows) Prozesse und Threads zu beenden oder deren Priorität zu verändern, benötige ich 64-Bit-Compilate (wofür, wenn man bei Pascal bleibt, z.Z. nur FPC bzw. Lazarus verfügbar sind). Doch jüngst nahm ich zu meiner Verblüffung wahr, daß der Proceßexplorer der Sysinternals, es ist ja ein 32-Bit-Programm, auch unter 64 Bit volle "Schlagkraft" besitzt. Meine einzige Erklärung: Es gibt Codeteile, die 64-Bit besitzen (über bedingte Compilierung in irgendeinem C/C++-Compiler? Ich vermute, daß die Sysinternals damit compiliert wurden).

Oder weißt Du auch hier genaueres?

Gruß

Delphi-Laie
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

AW: 32bit Service auf 64bit Platform

  Alt 23. Dez 2010, 13:27
Meist ist es so, dass der Programmierer etwas falsch macht, wenn da was nicht zu gehen scheint. Aber vllt. zeigst du mal, wie du es programmiert hast?

Der ProcessExplorer kommt als 32bit EXE auf die Platte, besitzt aber in der Ressource weitere Dateien, wie einen Treiber und eine 64bit Version, die dann mehr oder weniger transparent gestartet wird. Im ProcExp sieht man selbst, dass da zwei Prozesse gestartet werden und der letzte procexp64.exe heißt.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#14

AW: 32bit Service auf 64bit Platform

  Alt 23. Dez 2010, 13:38
Meist ist es so, dass der Programmierer etwas falsch macht, wenn da was nicht zu gehen scheint. Aber vllt. zeigst du mal, wie du es programmiert hast?

Der ProcessExplorer kommt als 32bit EXE auf die Platte, besitzt aber in der Ressource weitere Dateien, wie einen Treiber und eine 64bit Version, die dann mehr oder weniger transparent gestartet wird. Im ProcExp sieht man selbst, dass da zwei Prozesse gestartet werden und der letzte procexp64.exe heißt.
Danke, Dezipiator/Christian!

Ob ich etwas falsch mache? Nun, unter 32 Bit funktioniert alles tadellos, und zwar mit meinem Programm mit dem billigen Namen "Prozesse" (auch hier im Forum zu finden). Aber wenn beim Prozeßexplorer zusätzlich etwas "64-bittiges" gestartet wird, dann ist mir die Ursache schon klar. Ich werde es mal genauer recherchieren, was unter 64 Bit alles im Speicher auftaucht.

Gruß

Delphi-Laie
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#15

AW: 32bit Service auf 64bit Platform

  Alt 24. Dez 2010, 00:13
Mit vollen Rechten solltest du auch in der Lage sein 64bittige Prozesse abzuschießen. Allerdings wenn deine Methode des Abschusses ist, Code zu injizieren wird es nix, solange du eine DLL benutzt. Dann brauchst du mindestens eine 64bittige DLL.

Ansonsten hat Christian völlig recht. Der ProcExp benutzt mehrere EXE-Dateien (und SYS-Dateien) welche extrahiert werden. BinResTo, meine Funktion von vor ein paar Jahren bildet das nach, aber es gibt auch andere Varianten welche VCL-Klassen benutzen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#16

AW: 32bit Service auf 64bit Platform

  Alt 24. Dez 2010, 10:53
Der ProcessExplorer kommt als 32bit EXE auf die Platte, besitzt aber in der Ressource weitere Dateien, wie einen Treiber und eine 64bit Version, die dann mehr oder weniger transparent gestartet wird. Im ProcExp sieht man selbst, dass da zwei Prozesse gestartet werden und der letzte procexp64.exe heißt.
Hallo Dezipaitor, leider sehe ich in keinem Prozeßanzeiger (Taskmanager, Prozeßexplorer, mein Programm „Prozesse“) einen 64-Bit-Ableger des Prozeßexplorers (unter Windows 7 64 Bit).


Hallo Assarbad, auch Dir vielen Dank!

Mit vollen Rechten solltest du auch in der Lage sein 64bittige Prozesse abzuschießen.
Volle Rechte verpasse ich dafür unter Windows 7 auch meinem Programm „Prozesse“ (32 Bit), so einfach ist es also nicht. Dennoch benötige ich eine 64-Bit-Version, um auch an die „Systemprozesse“ (wurde von Dir weiter oben korrekter spezifiziert) heranzukommen, deshalb meine Portierung zu Lazarus.

Allerdings wenn deine Methode des Abschusses ist, Code zu injizieren wird es nix, solange du eine DLL benutzt. Dann brauchst du mindestens eine 64bittige DLL.
Nein, das ist mir viel zu kompliziert (bin froh, daß ich die DLL-Injektion per Hook in einem anderen Programm hinbekam). Es sind einfache TerminateProcess, TerminateThread, SetPriorityClass und SetThreadPriority.

Der ProcExp benutzt mehrere EXE-Dateien (und SYS-Dateien) welche extrahiert werden. BinResTo, meine Funktion von vor ein paar Jahren bildet das nach, aber es gibt auch andere Varianten welche VCL-Klassen benutzen.
Dann kann er diese aber geschickt verstecken, denn, wie schon gesagt, es taucht nur eine Exe-Datei in den Prozeßlisten auf.

Schöne Weihnachten!

Edit: Kommando zurück. Nach dem Start des Prozeßexplorers (32 Bit) unter 64 Bit gebiert dieser anscheinend ein 64-Bit-Pendant, legt es auf der Platte ab und startet dieses.

Geändert von Delphi-Laie (24. Dez 2010 um 11:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#17

AW: 32bit Service auf 64bit Platform

  Alt 24. Dez 2010, 21:26
Hallo Dezipaitor, leider sehe ich in keinem Prozeßanzeiger (Taskmanager, Prozeßexplorer, mein Programm „Prozesse“) einen 64-Bit-Ableger des Prozeßexplorers (unter Windows 7 64 Bit).
Das kann eigentlich nur an mangelnden Rechten liegen. Siehe angehangenes Bild.

Volle Rechte verpasse ich dafür unter Windows 7 auch meinem Programm „Prozesse“ (32 Bit), so einfach ist es also nicht. Dennoch benötige ich eine 64-Bit-Version, um auch an die „Systemprozesse“ (wurde von Dir weiter oben korrekter spezifiziert) heranzukommen, deshalb meine Portierung zu Lazarus.
Aktivierst du bspw. auch das Debug-Privileg?

Dann kann er diese aber geschickt verstecken, denn, wie schon gesagt, es taucht nur eine Exe-Datei in den Prozeßlisten auf.
Wie gesagt, entweder ist es eine uralte oder brandneue Version die sich da anders verhält, oder irgendwas anderes stimmt nicht.

Edit: Kommando zurück. Nach dem Start des Prozeßexplorers (32 Bit) unter 64 Bit gebiert dieser anscheinend ein 64-Bit-Pendant, legt es auf der Platte ab und startet dieses.
Eben. Siehe Anhang


Frohes Fest.
Miniaturansicht angehängter Grafiken
procexp64.png  
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#18

AW: 32bit Service auf 64bit Platform

  Alt 24. Dez 2010, 23:14
Hallo Dezipaitor, leider sehe ich in keinem Prozeßanzeiger (Taskmanager, Prozeßexplorer, mein Programm „Prozesse“) einen 64-Bit-Ableger des Prozeßexplorers (unter Windows 7 64 Bit).
Das kann eigentlich nur an mangelnden Rechten liegen. Siehe angehangenes Bild.
Jetzt klappt es auf einmal auf wundersame Weise bei mir auch mit dem Starten des untergeordneten Prozesses im Speicher. Die untergeordnete Exe-Datei wird (nur) dann gelöscht, wenn man den Prozeßexplorer korrekt beendet, also nicht abschießt. Ich schoß ihn wohl ab, und so wunderte ich mich, eine 64-Bit-Datei auf dem Datenträger zu haben.

Volle Rechte verpasse ich dafür unter Windows 7 auch meinem Programm „Prozesse“ (32 Bit), so einfach ist es also nicht. Dennoch benötige ich eine 64-Bit-Version, um auch an die „Systemprozesse“ (wurde von Dir weiter oben korrekter spezifiziert) heranzukommen, deshalb meine Portierung zu Lazarus.
Aktivierst du bspw. auch das Debug-Privileg?
Ja!

Dann kann er diese aber geschickt verstecken, denn, wie schon gesagt, es taucht nur eine Exe-Datei in den Prozeßlisten auf.
Wie gesagt, entweder ist es eine uralte oder brandneue Version die sich da anders verhält, oder irgendwas anderes stimmt nicht.
Nagelneu, nämlich die 14.01-Version. Davor zwei 11er- und noch eine 10er-Version.

Ich war eben nur irritiert, weil es schien, daß ein 32-Bit-Programm maximale bzw. maximal mögliche Rechte unter 64 Bit hatte. Dem ist wohl doch nicht so. Ich bin beruhigt.

Danke, gleichfalls!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:24 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