Boolean von ein anderem Java Programm während der Laufzeit ändern

DasDirt

Mitglied
Hi leute,
ich hoffe das ihr mir helfen könnt ich will einen boolean aus einen anderen Java Programm während es läuft ändern dabei weiß ich in welcher klasse der boolean ist und wie er heißt außerdem ist der boolean auf public static gesetzt
ich weiß nicht ob sowas überhaut geht wenn ja würde ich gerne wissen wie.
Übrigens würde es mir auch reichen wenn mir jemand schreiben kann, wie ich einen boolean in einer class datei ändere
 

mihe7

Top Contributor
Ich würde mir einfach eine Klasse schreiben, deren main-Methode die originale main-Methode aufruft und davor das boolean ändert. Wenn es zur Laufzeit sein muss, musst Du Dir natürlich eine Möglichkeit zur Kommunikation überlegen und einbauen.

Übrigens würde es mir auch reichen wenn mir jemand schreiben kann, wie ich einen boolean in einer class datei ändere
Keine Ahnung, ob es einfacher geht, aber es scheint mir gangbar zu sein, das Ding durch einen Decompiler zu jagen, das boolean zu ändern und neu zu übersetzen.
 

DasDirt

Mitglied
Ich würde mir einfach eine Klasse schreiben, deren main-Methode die originale main-Methode aufruft und davor das boolean ändert. Wenn es zur Laufzeit sein muss, musst Du Dir natürlich eine Möglichkeit zur Kommunikation überlegen und einbauen.


Keine Ahnung, ob es einfacher geht, aber es scheint mir gangbar zu sein, das Ding durch einen Decompiler zu jagen, das boolean zu ändern und neu zu übersetzen.
Erstmal danke für deine Antwort,
Aber wie sage ich dem Programm welche Main Methode es benutzen soll. Und gibt es nicht eine Möglichkeit über ASM oder javaAssist
 

mihe7

Top Contributor
Aber wie sage ich dem Programm welche Main Methode es benutzen soll
Wie startest Du denn das Programm? Wenn es per "java -cp" gestartet wird, dann ist die Hauptklasse ja direkt angegeben. Wenn es ein "ausführbares" Jar ist, dann gibt es darin eine Datei /META-INF/MANIFEST.MF mit einem Main-Class-Eintrag.

Und gibt es nicht eine Möglichkeit über ASM oder javaAssist
Natürlich kann man sich ein Programm schreiben, das den Bytecode ändert oder einen Bytecode-Editor verwenden. Was gefällt Dir denn an den o. g. Ansätzen nicht?
 

mihe7

Top Contributor
Wenn die Update-Seite down ist, wie kann es dann sein, dass das Programm jedesmal neu heruntergeladen wird?!?
 

mihe7

Top Contributor
Ich habe das Problem auch noch nicht verstanden.

@DasDirt Du hast ein Programm A und ein Programm B. Du startest Programm A. Programm B enthält ein Boolean, das steuert ob Programm A versucht, Programm B herunterzuladen. Das funktioniert nicht, daher crasht Programm A.

Falls das soweit richtig ist, kannst Du doch die betreffende Klasse von Programm B dekompilieren, das Boolean ändern, neu kompilieren. Dann hast Du ein Programm B', das Programm B ersetzt, so dass Programm A den Download nicht mehr versucht.

Sollte es so sein, dass Programm A das Boolean enthält, dann kannst Du die Klasse aus A dekompilieren/kompilieren oder auch eine neue main-Methode schreiben, die die ursprüngliche main-Methode aufruft, zuvor aber das Boolean setzt.
 

DasDirt

Mitglied
Ich habe das Problem auch noch nicht verstanden.

@DasDirt Du hast ein Programm A und ein Programm B. Du startest Programm A. Programm B enthält ein Boolean, das steuert ob Programm A versucht, Programm B herunterzuladen. Das funktioniert nicht, daher crasht Programm A.

Falls das soweit richtig ist, kannst Du doch die betreffende Klasse von Programm B dekompilieren, das Boolean ändern, neu kompilieren. Dann hast Du ein Programm B', das Programm B ersetzt, so dass Programm A den Download nicht mehr versucht.

Sollte es so sein, dass Programm A das Boolean enthält, dann kannst Du die Klasse aus A dekompilieren/kompilieren oder auch eine neue main-Methode schreiben, die die ursprüngliche main-Methode aufruft, zuvor aber das Boolean setzt.
Ich habe Programm A das Programm B von einen Server herunterlädt dann startet. Programm B überprüft auf einen anderen Server ob es ein Update gibt da der Server aber down ist crasht Programm B weil es sich nicht mit den Server verbinden kann.
Ich habe keine Möglichkeit den Code von Programm B zu ändern
 

httpdigest

Top Contributor
ich hoffe das ihr mir helfen könnt ich will einen boolean aus einen anderen Java Programm während es läuft ändern dabei weiß ich in welcher klasse der boolean ist und wie er heißt außerdem ist der boolean auf public static gesetzt
Also: es gibt ein statisches Feld bzw. eine Klassenvariable, die du ändern möchtest? Wichtiges Detail: Ist dieses Feld zusätzlich zu static auch noch final und ist es wirklich auf einen literalen Wert gesetzt, also true oder false, oder wird das Feld per Ausdruck/Methodenaufruf initialisiert?
 

DasDirt

Mitglied
Also: es gibt ein statisches Feld bzw. eine Klassenvariable, die du ändern möchtest? Wichtiges Detail: Ist dieses Feld zusätzlich zu static auch noch final und ist es wirklich auf einen literalen Wert gesetzt, also true oder false, oder wird das Feld per Ausdruck/Methodenaufruf initialisiert?
Das Feld ist nur auf Public static gesetzt und direkt initialisiert
 

httpdigest

Top Contributor
Übrigens würde es mir auch reichen wenn mir jemand schreiben kann, wie ich einen boolean in einer class datei ändere
Das Programm wir von einen anderen Programm ausgeführt und jedes Mal neu heruntergeladen daher wird es etwas schwieriger die Datei zu modifizieren
Ich habe keine Möglichkeit den Code von Programm B zu ändern
Ich bin verwirrt: Hast du denn nun die Möglichkeit, den Bytecode der entsprechenden Klasse zu ändern, oder nicht?
Falls ja, suchst du nach dem Hex-Muster 0x04, 0xB3. Das entspricht iconst_1, putstatic. Wenn du Glück hast, enthält die Klasse nur eine solche Zuweisung auf ein static Feld. Die 0x04 dann nur abändern zu 0x03 (iconst_0). Wenn du es umfangreicher/sicherer haben willst, würde ich ASM vorschlagen. Wie @mihe7 vorschlägt, entweder per statischer oder dynamischer Instrumentierung.
 

Neumi5694

Top Contributor
Läuft Programm B zu dem Zeitpunkt, wo A etwas daran ändern soll? Dann stell einen Befehl für z.B. einen DCOM-Server (oder was imemr die lieber ist) bereit, der die Variable ändert.
Wird B von A aufgerufen? Dann verwende einen Kommandozeilenparameter oder eine Systemvariable.
Was spricht dagegen, eine externe Datei zu verwenden, aus welcher der Wert der Variable geladen wird?
 

mrBrown

Super-Moderator
Mitarbeiter
Läuft Programm B zu dem Zeitpunkt, wo A etwas daran ändern soll? Dann stell einen Befehl für z.B. einen DCOM-Server (oder was imemr die lieber ist) bereit, der die Variable ändert.
Wird B von A aufgerufen? Dann verwende einen Kommandozeilenparameter oder eine Systemvariable.
Was spricht dagegen, eine externe Datei zu verwenden, aus welcher der Wert der Variable geladen wird?
Dürfte beides nicht klappen, wenn das nicht von Anfang an vorgesehen ist. Er sagte ja schon, dass er weder die Sourcen hat, noch dekompilieren kann, sonst wäre ja auch ein einfaches ändern der Konstante möglich gewesen :/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
C Boolean Array Allgemeine Java-Themen 4
J Boolean EventListener Allgemeine Java-Themen 2
E Boolean aus Klasse A als String in Klasse B ausgeben Allgemeine Java-Themen 4
A Boolean Array in Allgemeine Java-Themen 3
A boolean und prozesse Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
B boolean return typ verwenden? Allgemeine Java-Themen 5
D falsche Annahme nach korrekter Auswertung (if, boolean) Allgemeine Java-Themen 2
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
I Probleme mit Boolean-Methode Allgemeine Java-Themen 4
D Boolean Listener? Allgemeine Java-Themen 28
R boolean im Bean abfragen Allgemeine Java-Themen 18
D public boolean return Allgemeine Java-Themen 8
E boolean Array in ein byteArray mit derLänge 5 Allgemeine Java-Themen 6
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
J Vector - Boolean Allgemeine Java-Themen 24
H boolean wert ändern Allgemeine Java-Themen 2
L boolean aus der main übergeben? Allgemeine Java-Themen 12
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
P Methode aus anderem Paket aufrufen Allgemeine Java-Themen 1
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
C Datentypen Enum-Werte Bestanteil von anderem Enum Allgemeine Java-Themen 8
C Umgebungsvariable Java-Datei in anderem Verzeichnis ausführen Allgemeine Java-Themen 2
J Anderem Thread Variable mitgeben Allgemeine Java-Themen 2
A Nach Benutzerwechsel mit anderem Account in Windows anmelden Allgemeine Java-Themen 8
S Prozess der von anderem Prozess gestartet wurde beenden? (Windows Bildschirmtastatur) Allgemeine Java-Themen 4
T Externes Programm auf anderem Bildschirm starten Allgemeine Java-Themen 3
T Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 13
J Eclipse Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 14
I EDT scheint zu blocken wegen Dateioperation in anderem Thread Allgemeine Java-Themen 9
Z Mit ActionListener in anderem Frame lauschen? Allgemeine Java-Themen 3
M Log4J funktioniert nicht unter anderem Benutzer Allgemeine Java-Themen 5
R GPL code mixen mit anderem Code? Allgemeine Java-Themen 7
V Class Mapping - Klasse unter anderem Namen verfügbar machen Allgemeine Java-Themen 8
S jar-datei auf anderem Rechner nicht ausführbar. Allgemeine Java-Themen 40
S Deserialisieren mit anderem Klassennamen Allgemeine Java-Themen 5
conan2 BufferedReader.readLine() von anderem Thread aus beenden Allgemeine Java-Themen 4
J Einbinden einer protected-Methode aus anderem Package Allgemeine Java-Themen 2
G Java Programm auf anderem Pc ausführen Allgemeine Java-Themen 4
H .java Dateien in anderem Package Allgemeine Java-Themen 8
H jar-file in anderem main programm ausführen Allgemeine Java-Themen 2
G Link zu JCreator oder anderem Tool Allgemeine Java-Themen 2
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben