Java Übergebenen Programmcode editieren - womit?

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
19.475
Moin!

Ein für die Firma entwickeltes Programmpaket müsste angepasst werden. Das wurde mir an die Hand gegeben. Nun spreche ich so gut JAVA wie PHP oder Französisch… (Die Aufgbe ist SMPT-Server auf verschlüsselt und andere Ports denn 25 zu bringen.)

Mit dem JD habe ich mir immerhin den Programmcode im Klartext angesehen. Angriffspunkte habe ich schon gesehen, das ist immerhin das Schöne an modernen Sprachen. Da kann ich dann Trialen und Errorn. (Als oller Lateiner immerhin machbar.)

Google empfahl mir zum Bearbeiten (neben dem JDK als Basis) ein Tool namens Eclipse. (Das mir irgendwie verdächtig verwandt mit dem JD ist?!)
Damit kann ich zwar wie mit dem JD eine .JAR öffnen, aber was mir dann angeboten wird hilft nichts da es nur einen Error wirft statt Programmtext anzuzeigen.

Damit die laienhafte Frage: wie kriege ich eine .JAR denn editierfähig geöffnet um mein Glück mit dem Ändern von Ports und «Wahr» für TLS zu versuchen?

CN8
 
cumulonimbus8 schrieb:
Google empfahl mir zum Bearbeiten (neben dem JDK als Basis) ein Tool namens Eclipse. (Das mir irgendwie verdächtig verwandt mit dem JD ist?!)
Eclipse ist eigentlich kein "Tool", Eclipse ist eine komplette, mächtige Entwicklungsumgebung (IDE) für Java und andere Programmiersprachen. Es findet auch in vielen Unternehmen für das Entwickeln kommerzieller Anwendungen Verwendung. Ist also ein guter Ausgangspunkt für Dein Vorhaben.

Was mir nicht ganz klar ist, liegt Dir nur das fertige Programm (.jar und .class Files) vor oder wirklich der Quellcode (.java Files) ? Wenn Du letzteres hast, kannst Du mit Eclipse problemlos alle Anpassungen vornehmen. Die Programmiersprache zu lernen ist aber natürlich ein anderes Thema
 
  • Gefällt mir
Reaktionen: FranzvonAssisi
Eine JAR dekompilieren funktioniert aber auch nur, so lang diese nicht verschlüsselt/gesichert (obfuscated) wurde.
Prinzipiell sollte man das Programmpaket aber als Quellcode haben (.java).
Den hat man aber selten, wenn man ein Programm in Auftrag gegeben hat (es sei denn, man kauft diesen explizit mit).
 
eclipse kann nur "Klartext" editieren. Wenn du eh schon mit JD den "Klartext" gesehen hast, dann speichere den Code ab und öffne ihn mit eclipse. Allerdings musst du nach dem ändern das ganze wieder zu einem Jar bauen, was vielleicht für dich gar nicht so einfach wird.
Wieso wird sowas nicht an jemanden vergeben, der sich damit auskennt? Das würde viel Zeit und Ärger einsparen.
 
  • Gefällt mir
Reaktionen: FeelsGoodManJPG und new Account()
Falls das Programmpaket explizit für euch entwickelt wurde solltest du mal überprüfen ob ihr nicht den Quellcode dazubekomment habt. Falls nicht stellt sich erstmal die Frage ob ihr überhaupt dazu die Berechtigung habt das Programm anzupassen. Falls man eine Jar decompilieren muss um an den Quellcode zu kommen wird man im Regelfall dazu nicht berechtigt sein.

cumulonimbus8 schrieb:
Google empfahl mir zum Bearbeiten (neben dem JDK als Basis) ein Tool namens Eclipse.
Diesen Satz empfinde ich nicht als besonders vertrauenserweckend wenn es um sicherheitsrelevante Anpassungen in einem Java Programm geht.

EDIT:
Im normalfall sollte es für die Portwahl und für TLS(falls unterstützt) konfigurationsdatein geben. Im zweifelsfall portmapping verwenden und für TLS einen smtp proxy davorschalten.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TheCadillacMan, FranzvonAssisi, pcBauer und eine weitere Person
wahli schrieb:
Wieso wird sowas nicht an jemanden vergeben, der sich damit auskennt? Das würde viel Zeit und Ärger einsparen.
Weil es vor allem Geld spart... Die Zeit und den Ärger betrifft ja nur den Arbeitnehmer.
Warum einen Programmierer einstellen oder beauftragen, wenn es ein bestehender Angestellter mit "bisschen einarbeiten" auch hinkriegen könnte.
Und wenn der Arbeitnehmer das ablehnt, gibt direkt wiedern Minuspunkt...
 
  • Gefällt mir
Reaktionen: BeBur
sTuPiD-eLcH schrieb:
Weil es vor allem Geld spart... Die Zeit und den Ärger betrifft ja nur den Arbeitnehmer.
Warum einen Programmierer einstellen oder beauftragen, wenn es ein bestehender Angestellter mit "bisschen einarbeiten" auch hinkriegen könnte.
Und wenn der Arbeitnehmer das ablehnt, gibt direkt wiedern Minuspunkt...

Würde ich mir sofort einen neuen Job suchen. Als wäre das irgendwas triviales was man mit ein paar Nächten irgendwie hinbekommt. Wenn der Quellcode vielleicht weniger als 1000-Zeilen aufweist, evtl. noch machbar aber alles darüber... Hinzu kommt dass es auch noch um sicherheitsrelevante Sachen geht. Also ich drück dem TE die Daumen, vielleicht ist er wirklich begabt dafür aber seinen Arbeitgeber wünsche ich die Pleite wenn "Geld einsparen" die Gründe sind.
 
  • Gefällt mir
Reaktionen: BeBur
Bist du Programmierer?
Wenn nein, dann holt euch einen Freiberufler für diese Aufgabe.
Das spart wirklich Geld, weil der das in viel kürzerer Zeit erledigt. Und du kannst dafür andere Arbeiten erledigen.
Die Entwicklerfirma gibt es nicht mehr?
 
Keine Ahnung, was das Programm macht, aber die Antwort von @dasbene erscheint mir am sinnvollsten.

Also entweder nach Config-Dateien für das Programm suchen oder einen Proxy verwenden.

Das bestehende Programm zu disassemblieren, zu ändern und wieder neu zu compilieren, ohne Erfahrung in professioneller Java-Entwicklung ist ein Unterfangen mit wenig Aussicht auf Erfolg.

Ich hatte einmal ein altes Java-Projekt auf dem Tisch.
Das konnten wir nicht einmal mehr compilieren, obwohl wir den Code hatten.
Aber wir hatten das passende JDK nicht mehr und keine Lust auf den Kampf mit Oracle.

Wir haben das einfach in C# neu geschrieben.

Wenn es unbedingt sein muss, dann nimm eine Sprache, die Du beherrscht oder die Du gerne lernen willst und mach das neu.
Für C# z.B. gibt es eine ganze Reihe Smtp-Server und / oder Clients, die man einfach als nuget Package in sein Projekt einbinden kann.
 
cumulonimbus8 schrieb:
Ein für die Firma entwickeltes Programmpaket müsste angepasst werden.
Dann gibt es auch den Quellcode ... alles andere ist unglaubwuerdig und macht keinen Sinn. Nimm den und pass ihn an, obwohl - du hast ja keine Ahnung davon - also lass es bitte.

Frag erstmal nach einer Dokumentation dafuer. Und Konfigurationsmoeglichkeiten. Dann kanst du weitersehen.
 
abcddcba schrieb:
Dann gibt es auch den Quellcode
Irgendwann hat irgendwer das Programm geschrieben und dieser Jemand hat auch den Quellcode.
Ich bezweifle, dass der TO diesen hat, da dieser in den seltensten Fälle mit verkauft wird, es sei denn, wie bereits von mir geschrieben, man kauft diesen explizit mit.
Aber der Softwareentwickler will ja (eventuell) auch die Wartung für das Programm machen, behält sich also vor, dass Korrekturen nur durch ihn erfolgen können.
Wenn dieser dann allerdings pleite geht und der Entwickler die "Restbestände" an Quellcode nicht selbstständig an die Kunden veräußert, sieht es für den, der das Programm noch nutzen will, schlecht aus.
 
(Sorry, ich fand gestern Abend keine Gelegenheit mehr, und bis eben auch heute nicht.)

Diese ganze Sache ist kompliziert; sagen wir das (ich nicht involviert) persönliche Ressentiments da mit reinwirken. Näheres habe ich nicht… (Aber ich bin da nicht besser dran als bei VW: mach mal da eine Schummelsoftware, Problem lösen wir hier oben.)

Es ist offensichtlich der Fall, dass ich da nur den endgültigen Code habe.
Daher auch diese Idee mit dem Decompiler.
Wenn wiederum der JD eine *.JAR zu Klartext aufdröseln kann…
→ und wenn ich nicht blöd bin aber nicht editiertbar (+ speicherbar) macht
…dann frage ich mich mal warum ein Trumm wie Eclipse das nicht auch kann.

Wie also bekomme ich die Biene auf die Blüte?
(Dass ich eher anraten würde, dass der Programmierer sich ransetzen möge, ist ein anderes Blatt Papier.)

CN8
 
cumulonimbus8 schrieb:
Daher auch diese Idee mit dem Decompiler.
Wenn wiederum der JD eine *.JAR zu Klartext aufdröseln kann…
→ und wenn ich nicht blöd bin aber nicht editiertbar (+ speicherbar) macht
…dann frage ich mich mal warum ein Trumm wie Eclipse das nicht auch kann.

Eclipse ist im Grunde eine Plattform für Entwickler-Tools und kann beliebig erweitert werden. Es gibt in der Tat auch Decompiler Plugins für Eclipse und rudimentäre Funktionalität zum Anschauen einzelner Dateien ist ab Werk dabei.

cumulonimbus8 schrieb:
Wie also bekomme ich die Biene auf die Blüte?

Die einfachste Lösung wurde oben ja schon genannt.

Ansonsten musst Du Dich halt damit beschäftigen. Zum Ändern muss nicht die komplette .jar Datei dekompiliert und wieder kompiliert werden. Es reicht nur die geänderten Dateien zu kompilierten und in der .jar Datei auszutauschen, wenn man es nicht ohnehin über Änderungen in den Einstellungen bewerkstelligen kann.
 
Berichte uns bitte, nachdem du das Projekt abgeschlossen hast. Mich würde der Aufwand, den du rein gesteckt hast, interessieren.
 
wahli schrieb:
Berichte uns bitte, nachdem du das Projekt abgeschlossen hast. Mich würde der Aufwand, den du rein gesteckt hast, interessieren.
Prognose: Nie. Schuld ist <externe Entität hier einfügen: Eclipse, Java, Internet-Foren, ...>
 
  • Gefällt mir
Reaktionen: Nase
Letzteres sagt mir nichts.
Oder anders (sollte ich richtig raten); nach etwas googlen was man nicht mal in Stichworten kennt kann man nicht.

Die einfachste Lösung wurde oben ja schon genannt.
Welche der Möglichkeiten ist gemeint? Mit JD etwas im Klartext speichern?

Wäre es so einfach sollte mir die Lösung aufgefallen sein, denke ich.

CN8
 
Hmmm… Mein Bauch sagt, da sind keine solchen »einfachen« Konfigurationsdatien. Zumidest waren mir keine aufgefallen, ich fürchte, es gibt keine damit keiner dran rumspielt (k.A. ob das sogar so beauftragt war).
Ein Proy kommt de Praxe nicht infrage.
Mal morgen nachfassen.
CN8
 
Zurück
Oben