Einfügen von OS X-Systemaufrufen

Ich muss mich einschalten(lass meine Funktionen anstelle der ursprünglichen Funktionen aufrufen) Einige OS X-Systemaufrufe beheben einen Fehler in einer Closed-Source-Software.

Vorzugsweise würde die resultierende Lösung unter 10.5 (Leopard) und neuer funktionieren, aber ichkönnte in der Lage sein, 10.6 (Snow Leopard) zu fordern, wenn das Argument stark genug ist.

Vorzugsweise wäre die resultierende Lösung eine ausführbare Datei, aber ich könnte mich mit einem Skript zufrieden geben.

Vorzugsweise könnte sich die resultierende Lösung dazwischen setzen("Die Vektoren stehlen") Auch wenn die Zielanwendung ausgeführt wird, kann ich mich mit einer Technologie zufrieden geben, die sich selbst einschleusen muss, wenn die Anwendung geladen wird.

Vorzugsweise würde die resultierende Lösung in C oder C ++ entwickelt, aber ich könnte mich mit Objective-C oder etwas anderem zufrieden geben.

Bisher habe ich experimentiert mit:

1)DTrace scripting, das hat mir viel beigebracht, aber die einschränkungen der d sprache(eingeschränkte Flusskontrolle usw.) Machen Sie es zu einem großen Schmerz für das, was ich tue, ganz zu schweigen davon, dass das Ergebnis ein Drehbuch wäre, das nicht so ordentlich und eigenständig ist, wie das, wonach ich fotografiere.

2)DYLD_INSERT_LIBRARIES Interposition, die in vielerlei Hinsicht flott ist, aber möglicherweise auf die Namensraumverflachung zurückzuführen ist(Ich werde nicht vorgeben, tief zu verstehen, was das bedeutet), es funktioniert gut gegen einfachere ausführbare Dateien, bringt aber meine Zielanwendung zum Erdrosseln, selbst wenn ich eine Do-Nothing-Bibliothek erstelle, in der tatsächlich keine Aufrufe zwischengeschaltet sind.

Meine neueste Idee ist, damit zu experimentierenmach_star (https://github.com/rentzsch/mach_star), aber ich höre hier zuerst auf, um die Stack Overflow-Community zu fragen, die ausnahmslos mehr weiß als ich ...

... soll ich mir neben mach_star noch was anderes anschauen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage