Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm vor Taskmanager verstecken (https://www.delphipraxis.net/49912-programm-vor-taskmanager-verstecken.html)

DevilsCamp 18. Jul 2005 08:07


Programm vor Taskmanager verstecken
 
Liste der Anhänge anzeigen (Anzahl: 2)
ich habe folgenden Code im INet auf diversen Seiten gefunden:

Delphi-Quellcode:
function RegisterServiceProcess(dwProcessID, dwType: dword): integer; stdcall;
external 'Kernel32.dll';

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterServiceProcess(0, 1);
end;
angeblich soll dieser Code das Programm vor dem Taskmanager verstecken.
Doch bei mir macht er nur folgendes:
- Das Programm startet im Einzelschritt
- Es stürzt ab, bevor die OnCreate-Methode des MainForms aufgerufen werden kann.
- Ich bekomme die Fehlermeldung, die im Anhang zu sehen ist


Wenn ich nun die Zeile mit "RegisterServiceProcess" auskommentiere, dann läuft das Programm wieder normal.

Hat einer von euch 'ne Ahnung, was falsch sein könnte?

(Quell-Code im Anhang)

marabu 18. Jul 2005 09:58

Re: Programm vor Taskmanager verstecken
 
Hallo Marc,

üblicherweise übergibst du GetCurrentProcessID() als ersten Parameter.

Grüße vom marabu

DevilsCamp 18. Jul 2005 10:01

Re: Programm vor Taskmanager verstecken
 
:(

Hat leider auch nicht den gewünschten Effekt.
Ich habe immer noch den selben Fehler...

Olli 18. Jul 2005 10:02

Re: Programm vor Taskmanager verstecken
 
a.) Man versteckt keine Prozesse vor dem TaskManager, sondern entzieht dem Benutzer den Zugriff
b.) Funktioniert deine C&P-Frickellösung nur auf Windows 9x/Me

Um es vorneweg klarzustellen. Ja, RegisterServiceProcess() ist eine Frickellösung. Da hilft auch kein rumdiskutieren. Während ich bei Win9x/Me ohne Rechteverwaltung durchaus noch eine Daseinsberechtigung sehen könnte (mit viel gutem Willen), ist sie ab NT4 (eigentlich NT allgemein) nicht mehr gegeben. Daher existiert diese Funktion dort nicht. Und das ist auch gut so. Willst du verhindern, daß dein Prozess beendet wird, so tu dies über ACLs usw.!

Sagst du uns noch welches OS du hast, Marc?!

marabu 18. Jul 2005 10:11

Re: Programm vor Taskmanager verstecken
 
Gerade wollte ich Marc bitten vor dem Aufruf der Funktion WIN95 zu starten. Ich hatt in meiner code library geschaut und die Abhängigkiet erst soeben in der online hilfe entdeckt. Peinlich...

marabu

Olli 18. Jul 2005 10:16

Re: Programm vor Taskmanager verstecken
 
Zitat:

Zitat von marabu
Gerade wollte ich Marc bitten vor dem Aufruf der Funktion WIN95 zu starten. Ich hatt in meiner code library geschaut und die Abhängigkiet erst soeben in der online hilfe entdeckt.

Teamwork geht doch auch ;)

Mich wundert eigentlich nur, daß die o.g. Fehlermeldung kommt, weil dies für mich bedeutet, daß es kein fehlender Import sein kann. Da würde der PE-Loader vorher aufmucken. Also entweder gibt es einen schlechten Stub in dem OS, welches er benutzt, oder er benutzt Win9x/Me. Wobei dann der Fehler (lt. Adresse) gefühlsmäßig in einer DLL liegen dürfte.

Hatte schon viele Probleme mit dieser Mist-Funktion. Die sollte man nur dynamisch importieren ... alle Programmierer, die das mißachten, gehören in die VisualBasic-Hölle :mrgreen: ... wurde uns diese Funktion vielleicht sogar vom Teufel der VB-Hölle persönlich gesandt? :mrgreen:

Das ist übrigens der Grund, warum diese Funktion noch immer nicht offiziell dokumentiert ist.

DevilsCamp 18. Jul 2005 10:27

Re: Programm vor Taskmanager verstecken
 
1. Ich nutze Win2000 Pro, das Programm soll aber auch unter WinXP laufen (Home und Pro)
2. Delphi 7 Pro.

3.
Das Programm soll eine Uhr sein, die ständig im Vordergrund liegt, damit man nicht immer die Taskleiste öffnen muss.
Sie kann jederzeit per PopUp Menü beendet werden.
Ich möchte sie nur verstecken, damit sie nicht per ALT-TAB auswählbar ist und so Platz spart...
Rechtevergabe wäre hier also wie mit Kanonen auf Spatzen schießen.

Olli 18. Jul 2005 10:57

Re: Programm vor Taskmanager verstecken
 
Delphi-Quellcode:
type
  TFNRegisterServiceProcess = function(dwProcessID, dwType: dword): Integer; stdcall;

function RegisterServiceProcess(dwProcessID, dwType: DWORD): Integer;
var
  hLib:THandle;
  _RegisterServiceProcess: TFNRegisterServiceProcess;
begin
  // Ist sowieso immer geladen
  _RegisterServiceProcess := nil;
  hLib := GetModuleHandle('Kernel32.dll');
  if(hLib <> 0)then
    @_RegisterServiceProcess := GetProcAddress(hLib, 'RegisterServiceProcess');

  if(Assigned(@_RegisterServiceProcess))then
    result := _RegisterServiceProcess(dwProcessID, dwType)
  else
  begin
    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    result := 0; // Fehler signalisieren
  end;
end;
Mit W2K verwendet man diese Funktion einfach nicht. Einen Prozess unter NT verstecken zu wollen ist
a.) entweder dumm, oder
b.) mit einer bösen Absicht (Rootkit, Virus) verbunden.

Such's dir aus ;) ... das Thema RSP ist so alt wie sonst nix. Mußt du diese Funktion dennoch verwenden, so wrappe sie wie ich es dir oben schnell hingetippt habe.
Beispiele mit LoadLibrary() kannste hier komplett vergessen, weil manche Menschen denken sie könnten einen Win32-Prozess ohne kernel32.dll starten :mrgreen:

Siehe auch: http://support.microsoft.com/default...b;en-us;125714

:wall: ... für dein Ziel brauchst du eine ganz andere Lösung. Poste ich nach dem Mittagessen wenn keiner schneller war. Den Code zum Verstecken haste ja nun.

runger 18. Jul 2005 11:09

Re: Programm vor Taskmanager verstecken
 
Hallo Olli,
klingt ganz schön überheblich, was du da von dir gibst.

Zitat:

Einen Prozess unter NT verstecken zu wollen ist
a.) entweder dumm, oder
b.) mit einer bösen Absicht (Rootkit, Virus) verbunden.
Zitat:

... für dein Ziel brauchst du eine ganz andere Lösung. Poste ich nach dem Mittagessen wenn keiner schneller war. Den Code zum Verstecken haste ja nun.
Warum, wenn du Jemanden für a.) dumm oder b.) böswillig hälst, willst du dann selbst eine Lösung präsentieren?
Zu welcher Kategorie gehörst du denn zu a.) oder b.)?

Rainer ( dieser Beitrag ist nicht ganz ernst gemeint )

Olli 18. Jul 2005 11:41

Re: Programm vor Taskmanager verstecken
 
Hi Rainer,

locker bleiben.
Zitat:

Zitat von runger
klingt ganz schön überheblich, was du da von dir gibst.

Kann sein. Wahrheit tut manchmal weh. Da ich aus Wissen heraus und nicht aus übersteigertem Selbstbewußtsein heraus schreibe, leiste ich mir sowas. Wenn ich nicht wüßte wovon ich rede, würde ich nicht so klare Worte wählen.
Nur weil es dumm ist etwas zu tun, ist derjenige der es tut nicht gleich dumm. Oder?

Zitat:

Zitat von runger
Zitat:

... für dein Ziel brauchst du eine ganz andere Lösung. Poste ich nach dem Mittagessen wenn keiner schneller war. Den Code zum Verstecken haste ja nun.
Warum, wenn du Jemanden für a.) dumm oder b.) böswillig hälst, willst du dann selbst eine Lösung präsentieren?

Ich habe dir mal die wichtigste Stelle meines Satzes markiert. Er will nämlich offenbar nicht den Prozess, sondern vielmehr das Anwendungsfenster verstecken. Das gehört eigentlich zu einer guten Fragestellung - Ziel angeben, statt aktuellen Schritt erfragen, aber kann ja jedem mal passieren ;)

Zitat:

Zitat von runger
Zu welcher Kategorie gehörst du denn zu a.) oder b.)?

Das obliegt dem jeweiligen Betrachter :zwinker:
Übrigens: siehe deine Signatur ;) -> Ja.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Seite 1 von 4  1 23     Letzte »    

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