Anwendung in C++ einfügen
-
Hallo,
ich hab eine kleine Frage.
Und zwar hab ich eine Anwendung in C++ die bereits kompiliert ist allerdings habe ich das schon seit ca. 4 Jahren gemacht. Und nun habe ich leider den Quellcode nicht mehr zur Verfügung. (Festplatte abgeraucht)
Nun würde ich das Programm als ein Teil von einem neuen C/C++ Programm nutzen.
Also ich möchte die bereits kompilierte Anwendung in einer neuen Anwendung nutzen.
Allerdings würde ich es gerne verhindern das man die bereits kompilierte Anwendung selber ausführen kann.Also ich hab dann sozusagen 2 Anwendungen:
a.out (bereits kompilierte Anwendung)
a.in (neue Anwendung die auch die a.out verwendet).Jetzt würde ich es gerne verhindern das die a.out alleine Ausgeführt wird. Also das kein User die a.out ausführen kann.
Das Problem ist an sich nicht das ausführen der a.out obwohl es schon besser wäre wenn das gar nicht mehr geht aber das eigentliche Problem ist das diese Datei eine Ausgabe hat die auf der Konsole angezeigt wird und das sollte kein Benutzer lesen können.Ich hab mir das irgendwie so vorgestellt das die fest in die neue a.in kompiliert wird damit am schluss nur noch eine Datei existiert.
Hab aber dazu noch nichts gefunden wie ich das realisieren könnte.Ein anderer Weg wäre es die a.out nicht mehr ausführbar zu machen aber auch dazu hab ich nichts gefunden. Die Anwendung läuft unter Linux da kann man zwar die Rechte einschränken aber da die Anwendung auf mehrern System laufen soll könnte ein User die Rechte auch verändern.
Kann man das irgendwie realisieren?
Würde mich über jeden Tipp sehr freuen.
MFG
mkbm
-
Ich habe in VB.NET Programm auch schon Consolen anwendungen ausgeführt, dabei wird kein consolenfenster geöffnet. Die rückgabe daten bekommt man dann auch im programm zurück! d.h. man bekommt nicht mit da ein anderes Programm ausgefürht wurde! Natürlich hab ich das noch nicht in C++ verwendet, aber in VB gehts...
-
Hi,
also das Problem ist nicht das es eine Ausgabe während der Auführung gibt. Sondern wenn ein User auf die Idee kommt die bereits vor 4 Jahren kompilierte Anwendung auszuführen. Dabei gibt es eine Ausgabe. Und das will ich verhindern.
-
Also die Ausgabe eines schon kompilierten Programmes unterbinden?
Ohne Neukompilierung wird es sicherlich so nicht klappen, du könntest aber dir einen Hex-Editor zu Hand nehmen und die Ausgabe manipulieren / löschen.
-
oder den assamblercode des progammes direkt in c++ einbinden...
-
ganz billig wäre, einfach eine andere Datei vor die a.out einzufügen. also müll.dat + a.out = xyz.dat. Wenn du dann a.out brauchst, kopierst du den hinteren Teil raus und führst ihn aus und löscht ihn wieder. Aber, wenn dein Programm beendet wrid, vor du a.out löschen kannst, bleibt sie übrig.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Irgendwie klingt das nach Pfusch. Wenn Du die Anwendung selbst geschrieben hast, weißt Du vmtl. noch ganz grob, wie sie funktioniert hat, warum probierst Du dann nicht zumindest mal einen Decompiler wie Boomerang? Wenn das Programm sehr groß ist, wird das natürlich anstrengend, aber Du kannst Dich nicht darauf verlassen, dass Du auf fremden Rechnern Deine Binaries überhaupt ausführen kannst.
-
Hallo,
also ich hab das nun ausprobiert und finde bis jetzt die beste Lösung wenn ich die alte Datei einfach Manipuliere.
Also wie von "unterq" beschrieben irgendeine Datei an den Anfang hänge und dann wenn ich die richtige Datei benötige den Teil binär auszulesen.Assembler Code einfügen wird schwer da ich mich nicht richtig mit Assembler auskenne.
Decompilen habe ich bereits ausprobiert aber leider klappt das nicht.
Nun hätte ich noch eine andere Idee. Da ich gerne mir die manipulierte Datei ersparen würde.
Kann man den binär Code der Datei irgendwie als Konstante im C++ Programm einbauen also damit er dann jedes Mal beim Ausführen erst die Datei erstellt und danach wieder löscht.
Falls das nicht mit binär möglich ist da es ja viele komische Zeichen sind geht es vielleicht wenn ich den Hex Code nehme und dann daraus erst die Datei erstelle die ich brauch?
Würde mich über jede Hilfe sehr freuen.
MFG
mkbm
-
Jo, das wäre möglich. Dafür gibt es sogar Programme, die das automatisieren. Google mal nach bin2c
Aber ist die Anwendung so kompliziert, dass ein rewrite zu lange dauern würde? (Du befasst dich ja nun schon einen halben Monat mit dem Problem)
-
Hallo,
danke für die schnelle Antwort.
Naja nicht ganz ein halben Monat. Ich hatte auch einige Pausen dazwischen
Aber ich hatte mich ein bisschen in Assembler eingearbeitet aber das wird zu umständlich.
Das BIN2C sieht ganz gut aus aber das Problem ist das es ein Programm für Linux ist und wenn ich versuche das umzuwandeln erhalte ich die Fehlermeldung:
ERROR : I can't find source file dateiname
Wenn das klappen würde wäre es ein versuch wert.
Die Anwendung ist zwar nicht so groß aber leider sind da einige Berechnungen drin ich ich jetzt nicht mehr nicht mehr hinkriegen würde.MFG
mkbm
-
Ok.
Nun hab ich rausgefunden das es besser ist wenn ich die BIN2C.C in Linux kompiliere und dann unter Linux konvertiere.
Allerdings habe ich dann die Header Datei mit dem struct. Aber ich weiß nicht so richtig wie ich diese nun so einbinden kann das ich dann die Datei erstellen kann oder ausführen kann.
MFG
mkbm