AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

Ein Thema von Anthrox · begonnen am 28. Nov 2010 · letzter Beitrag vom 28. Nov 2010
Antwort Antwort
Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#1

Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 18:52
Hi,
ich habe ein Problem, und zwar versuche ich herauszufinden mit welchen Parametern ein fremdes Programm gestartet wurde.
Darauf gekommen dass dies überhaupt möglich ist bin ich als ich zufällig entdeckt habe dass der Sysinternals Process Explorer das kann.
Nun habe ich in Google/Forensuche/MSDN nichts Nützliches gefunden. Deshalb frage ich mal hier.
Weiss jemand mit welcher Funktion der Process Explorer das hinkriegt, oder hat sonst einen Ansatz wie ich das hinkriegen könnte?
Danke im Voraus.
MfG Anthrox
PS: Ich bin mir jetzt nicht sicher ob das die richtige Section ist, wenn nicht tut's mir Leid.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 19:03
http://blogs.msdn.com/b/oldnewthing/...5/9928372.aspx

Wichtig ist der letzte Absatz:
Zitat:
What does this mean for people who disregard this principle and go after the command line of another process? You have to understand what you are getting is non-authoritative information. In fact, it's worse. It's information the application itself may have changed in order to try to fool you, so don't use it to make important decisions.
Ich würde sagen vergiss es. Wozu brauchst du sie denn?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 19:32
Mit NtQueryInformationProcess und ReadProcessMemory
http://www.delphipraxis.net/1015162-post2.html
Thomas
  Mit Zitat antworten Zitat
Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#4

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 20:50
Danke für eure Antworten
http://blogs.msdn.com/b/oldnewthing/...5/9928372.aspx

Wichtig ist der letzte Absatz:
Zitat:
What does this mean for people who disregard this principle and go after the command line of another process? You have to understand what you are getting is non-authoritative information. In fact, it's worse. It's information the application itself may have changed in order to try to fool you, so don't use it to make important decisions.
Ich würde sagen vergiss es. Wozu brauchst du sie denn?
Das bedeutet dann man kann die Parameter zwar auslesen aber diese können vom Programm abgeändert worden sein?
Ich benötige es für ein Spiel. Der launcher übergibt dem Game einen 224 Zeichen langen Parameter.
Erstens habe ich keine Lust nach jedem Update 224 Zeichen aus dem Process Explorer abzuschreiben
und zweitens interessiert es mich wie das im Process Explorer gemacht wurde.

@toms
Ich habe es mit dieser Methode versucht, allerdings gibt er mir nur die ersten 27 Zeichen aus.

Inzwischen bin ich noch auf eine andere Möglichkeit gekommen. Ich habe eine DLL erstellt die GetCommandLine aufruft.
Diese kann ich per DLL-Injection in den Prozess injizieren und erhalte so den Parameter.
Aber es würde mich trotzdem noch interessieren wie man dies ohne DLL-Injection hinkriegt.

MfG anthrox
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 20:53
Das bedeutet dann man kann die Parameter zwar auslesen aber diese können vom Programm abgeändert worden sein?
Genau das bedeutet es. Schlimmsten falls steht nur noch Müll drin.

Zitat:
Ich benötige es für ein Spiel.
Und wozu brauchst du das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#6

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 20:58
Zitat:
Ich benötige es für ein Spiel.
Zitat:
Und wozu brauchst du das?
Damit das Spiel nur vom launcher gestartet werden kann muss man der game-exe die richtigen Parameter übergeben.
Nun will ich mir einen eigenen launcher schreiben aber dafür brauche ich die Parameter.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 21:02
Wenn es immer der gleiche Parameter ist und sich nicht ändert, wäre es wahrscheinlich einfacher mittels Reverseengeneering Methoden den Aufrufparameter zu ermitteln.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#8

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 21:08
Wenn es immer der gleiche Parameter ist und sich nicht ändert, wäre es wahrscheinlich einfacher mittels Reverseengeneering Methoden den Aufrufparameter zu ermitteln.
Das ist es ja, bei jedem Game-Update ändert sich der Parameter.
Und damit ich den nicht jedesmal mühselig aus der EXE kratzen muss, habe ich eine Alternative gesucht. (und gefunden)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 21:16
Verrätst du uns auch die Lösung?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#10

AW: Parameter mit dem/denen fremdes Programm gestartet wurde ermitteln

  Alt 28. Nov 2010, 21:22
Verrätst du uns auch die Lösung?
Na klar.
Also ich habe eine DLL welche die Funktion GetCommandLine aufruft und den Rückgabewert in ein Textfile speichert.
Diese kann man in den Prozess injizieren und hat dann das TextFile.

Die DLL sieht so aus:
Delphi-Quellcode:
library CmdLine;

uses
  SysUtils,
  Classes,
  Windows;

{$R *.res}

var tFile:TextFile;

begin
  AssignFile(tFile, 'Cmd.txt');
  ReWrite(tFile);
  Write(tFile, GetCommandLine);
  CloseFile(tFile);
end.
Da ist jetzt noch keine Fehlerbehandlung o.ä. drinnen.
Nur eben der Code der die Parameter in das File speichert.
Und den Injector habe ich jetzt nicht extra selbst geschrieben. (Google FTW!)
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:35 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