Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Programm (exe) vor Start auf korrekte Datei überprüfen


erfahrener Neuling - Do 19.05.16 10:02
Titel: Programm (exe) vor Start auf korrekte Datei überprüfen
Hallo,

ich habe 2 Programme, sagen wir mal einen Viewer und einen Editor. Nun wollte ich in meinem Viewer einen Button o.ä. mit Path zur exe vom Editor einbauen und diesen über System.Diagnostics.Process.Start starten.
Ich will das zwar nicht veröffentlichen, aber wie könnte man nun vorher im Viewer überprüfen, ob sich hinter der exe auch wirklich der Editor verbirgt und nicht ein Schadprogramm, was den gleichen Namen trägt? Gibts da vielleicht bessere Möglichkeiten als über Process.Start?

Gruß
Julian


OlafSt - Do 19.05.16 10:32

Vor dem Start einen MD5/SHA der EXE errechnen und mit dem gespeicherten Wert vergleichen.


erfahrener Neuling - Do 19.05.16 10:57

Danke, scheint die richtige Antwort zu sein. Mal gucken, mit welchem Aufwand das verbunden ist ;)


Nersgatt - Do 19.05.16 11:30

Ich würde Aufgabe zu prüfen, ob es ein Schadprogramm ist, einem Virenscanner überlassen.


Ralf Jansen - Do 19.05.16 13:19

Fangen wir mal damit an warum das denn 2 Anwendungen sind? Und was sind das für 2.Anwendung. Beides selbsterstellt? Aus dem gleichen Buildprozess? Die zu startende Anwendung ist sowieso irgendwas Fremdes? Danach hätte ich vielleicht ne Meinung insbesondere ob ein Hashcheck überhaupt sinnvoll ist.


erfahrener Neuling - Do 19.05.16 13:38

@Ralf Jansen
Ja sind beide von mir erstellt (Editor erstellt Dateien, die der Viewer öffnen kann).
Zitat:
Aus dem gleichen Buildprozess?
Was meinst du damit?
Zitat:
Danach hätte ich vielleicht ne Meinung insbesondere ob ein Hashcheck überhaupt sinnvoll ist.
Was wären denn sinnvolle Alternativen (außer beide Projekte in einem zusammenzufassen)?

@Nersgatt
Ob nun Schadprogramm oder nicht, es würde reichen, irgendein Programm nach meinem zu benennen und meins würde nicht mehr starten. Das will ich vermeiden.


Ralf Jansen - Do 19.05.16 14:37

Zitat:
@Ralf Jansen
Ja sind beide von mir erstellt (Editor erstellt Dateien, die der Viewer öffnen kann).

Warum sind es dann 2 Anwendungen und nicht eine?

Zitat:
Was meinst du damit?

Irgendwie wirst du ja die Anwendungen erstellen müssen. Wenn du zum Beispiel direkt aus Visual Studio baust und da dann beide Executables rausfallen wird es dir eher schwer fallen den Hash des einen(der erst nach dem bauen feststeht) zu Prüfzwecken in den anderen reinzukompilieren oder anders so abzulegen das der nicht auch manipulierbar ist.

Zitat:
Was wären denn sinnvolle Alternativen (außer beide Projekte in einem zusammenzufassen)?

Dazu müßte ich wissen warum es 2 sind und nicht eine. Wenn sie so eng miteinander verknüßt sind das das geprüft werden muß und du sie selbst mit den gleichen Mitteln erstellt hast ergibt sich mir da kein Sinn die nicht zusammenzufassen.


erfahrener Neuling - Do 19.05.16 15:41

Zitat:
Dazu müßte ich wissen warum es 2 sind
Einfach so, just 4 fun. (ein bisschen auch, weil ich noch nichts mit UserControls gemacht hab). Wenn ich drüber nachdenk, macht es dann auch wenig Sinn, den Editor extra über den Viewer starten zu lassen.


Ralf Jansen - Do 19.05.16 16:49

Im allgemeinen Fall wo du beide Executables im Griff hast, solltest du die beiden Assemblies (oder besser gleich alle Beteiligten) signieren. Das Zertifikat das dafür benutzt wird zeichnet dann den Author der Datei explizit aus. Es steht eindeutig fälschungssicher dran das die Datei von "erfahrener Neuling" erstellt wurde weil nur du den Schlüssel hast.


erfahrener Neuling - Fr 20.05.16 10:42

Ok signieren. Werd ich mir merken, im moment brauch ich's nicht (bin schon wieder mit anderen Sachen beschäftigt)