GoaSkin
Gast
Hallo,
ich möchte in einer Funktion eines Spieles ein paar Assembler-Anweisungen einbauen - im Grunde eine CaseOf-Bedingung erweitern (wenn Variable 1=X, dann Variable 2=Y), um auf diese Weise neue Submenüs zu implementieren.
Ich habe das Programm mit otool disassembliert und mittlerweile herausgefunden, an welche Stelle welcher Code eingetragen müsste. Das Problem dabei ist jedoch, daß die Funktion dabei länger wird und im Falle einer Nachbearbeitung im HEX-Editor die Zielpositionen sämtlicher folgender Sprunganweisungen sowie die Startpositionen der Funktionen im Index nicht mehr stimmen würden.
Gibt es für diese Problematik noch andere Lösungen außer mit Hilfe von Sprunganweisungen den zusätzlichen Code in Teile des Programmes zu verweisen, die nicht wirklich benötigt werden und den dortigen Code zu ersetzen? z.B.
- eine Art Assembler-Editor, der Sprungpositionen automatisch begradigt
- die Möglichkeit, das Programm zu entlinken und nach der Nachbearbeitung einer einzelnen .o-Datei das ganze wieder erneut zu linken
- die einzelne Funktion in eine Bibliothek zu verlagern und das Programm anzuweisen, diese von dort aufzurufen statt aus der Binärdatei selbst
- ganz andere Lösungen?
Die Nachbearbeitung des Binärprogrammes soll zunächst nur zum Eigenbedarf sein. Einen Patch werde ich natürlich nur im Einverständnis des Herstellers verbreiten. Es handelt sich um Abandonware.
ich möchte in einer Funktion eines Spieles ein paar Assembler-Anweisungen einbauen - im Grunde eine CaseOf-Bedingung erweitern (wenn Variable 1=X, dann Variable 2=Y), um auf diese Weise neue Submenüs zu implementieren.
Ich habe das Programm mit otool disassembliert und mittlerweile herausgefunden, an welche Stelle welcher Code eingetragen müsste. Das Problem dabei ist jedoch, daß die Funktion dabei länger wird und im Falle einer Nachbearbeitung im HEX-Editor die Zielpositionen sämtlicher folgender Sprunganweisungen sowie die Startpositionen der Funktionen im Index nicht mehr stimmen würden.
Gibt es für diese Problematik noch andere Lösungen außer mit Hilfe von Sprunganweisungen den zusätzlichen Code in Teile des Programmes zu verweisen, die nicht wirklich benötigt werden und den dortigen Code zu ersetzen? z.B.
- eine Art Assembler-Editor, der Sprungpositionen automatisch begradigt
- die Möglichkeit, das Programm zu entlinken und nach der Nachbearbeitung einer einzelnen .o-Datei das ganze wieder erneut zu linken
- die einzelne Funktion in eine Bibliothek zu verlagern und das Programm anzuweisen, diese von dort aufzurufen statt aus der Binärdatei selbst
- ganz andere Lösungen?
Die Nachbearbeitung des Binärprogrammes soll zunächst nur zum Eigenbedarf sein. Einen Patch werde ich natürlich nur im Einverständnis des Herstellers verbreiten. Es handelt sich um Abandonware.