So fügen Sie einen LC_LOAD_DYLIB-Befehl in eine Mach-O-Binärdatei ein oder verbinden eine statische Bibliothek mit einer vorhandenen Binärdatei (IOS)

9

Dies ist das erste Mal, dass ich auf stackoverflow frage und ich bin verzweifelt.

Meine Aufgabe ist es, eine dylib zu laden oder eine statische lib zu einer bereits existierenden ausführbaren Datei für ein IOS-Gerät beizutreten.

Ich werde das static void __attribute__((constructor)) initialize(void) verwenden, um das Swizzling zu starten. Diese ausführbare Datei ist für den firmeninternen appstore gedacht, also muss ich nicht durch den Apple Appstore gehen (da sie ihn ablehnen).

Der Grund dafür ist, dass Sie eine bestehende IPA von einem Kunden und ihren Signaturschlüsseln nehmen und ihrer Anwendung eine neue Funktionalität hinzufügen, ohne dass ein Entwickler eingreifen muss.

Es gibt eine Firma namens nukona. Sie können den Film hier ansehen: Ссылка

Ich kann Ihnen sagen, dass ich versucht habe, LSEnvironment mit einem DYLD_INSERT_LIBRARIES in die plist-Datei zu stellen, aber es stellt sich heraus, dass LSEnvironment in der Sandbox einer IOS-Anwendung keine Wirkung zu haben scheint.

Ich habe auch versucht install_name_tool, um eine der Abhängigkeiten zu ändern und sie durch meine dylib zu ersetzen (die diese Abhängigkeit ebenfalls hat). Es stürzt ohne Information warum.

Offensichtlich, wenn ich die Dylib zu einer Testanwendung in XCode hinzufüge und neu kompiliere, funktioniert das perfekt, was gegeben ist. Dies kann ich jedoch zum Beispiel einem Administrator eines Unternehmens nicht stellen. Der Wiederaufbau kann Kunden davon abhalten, diese Bibliothek zu verwenden.

Hier ist eine verwandte Verbindung, die ich auf dem Stack-Überlauf fand, aber für osx und ich brauche es für IOS. Wie füge ich ein? LC_LOAD_DYLIB Befehl in eine Mach-O-Binärdatei (OSX)

Das Einzige, woran ich denken kann, ist, die binären Ladebefehle so zu bearbeiten, aber ich bin mir nicht sicher, wie und wie man das macht, unter Berücksichtigung der Verschiebungstabellen etc ...

Jede Alternative ist willkommen.

Danke für Ihre Zeit.

    
Tzahi 13.06.2012, 15:19
quelle

1 Antwort

6

Ich habe optool %code% , was genau dies tut Öffnen Sie ein Problem, wenn Sie Probleme haben)

    
Alex Zielenski 05.08.2014 05:56
quelle