Zaubernummer in Klassendateien einfügen
-
11-12-2019 - |
Frage
Ich habe ein Glas, in dem alle Klassendateien ihre magische Zahl und einen Typ entfernt haben, ich bin nicht sehr gut über diesen bestimmten Bereich.Was wäre der beste Weg, um in den 0xcafebabe hinzufügen und den Typ in jeden Klassifizieren zurückzunehmen und das Glas aufzupacken?
edit: Ich habe geprüft, nur die magische Zahl fehlt, die Dateien sind intakt, wenn ich sie manuell hinzufüge.
Lösung
Wenn Sie dies zur Laufzeit tun möchten, können Sie Ihren eigenen Klassenloader erstellen.Ich habe einen Pseudo-Code angehängt, der Sie auf dem Weg bringen könnte: generasacodicetagpre.
Aber ich denke, es ist besser, die JAR-Datei einfach mit einigen Betriebssystem-Tools zu beheben.
Andere Tipps
Wenn Sie nur die Magic-Nummer in die Klassendateien hinzufügen möchten, können Sie dafür ein einfaches Shell-Skript verwenden (vorausgesetzt, Sie befinden sich auf Linux oder haben Cygwin unter Windows.
Erstellen Sie zuerst eine Datei mit nur der 4 Byte des Headers (CafeBabe).
extrahieren Sie dann die Klassendateien aus dem JAR in ein anderes Verzeichnis und führen Sie diesen Befehl am root aus: generasacodicetagpre.
Hinweis: Das obige Skript arbeitet in Bash, aber Sie sollten in der Lage sein, etwas Ähnliches für jede Shell oder sogar für Windows zu schreiben.
Aber was meinen Sie damit, "haben ihre magische Zahl und den -typ entfernt "?Wenn der Bytecode in irgendeiner Weise gestattet wurde, könnten die Änderungen möglicherweise viel schwieriger sein, wenn nicht unmöglich zu fixieren.