Parameter von guarded_open_np

8

Ich habe festgestellt, dass guarded_open_np function von libsqlite3.dylib verwendet wird, um die Datenbankdatei zu öffnen. Ich habe sqlite3 open source gesehen, so etwas gab es nicht. Also definitiv hat Apple es geändert, um guarded_open_np anstelle von unix open zu verwenden.

Ich weiß, dass guarded_open_np eine private API ist und ich weder Header noch Dokumentation darüber gefunden habe. Ich möchte Interception (Cydias MSFunctionHook) auf guarded_open_np durchführen, also muss ich wissen, was die Parameter sind, nicht nur den Funktionsnamen.

Ich habe libsqlite3.dylib mit IDA Pro reverse-engineered, so heißt es guarded_open_np :

%Vor%

Es ist jedoch immer noch nicht klar, welche Parameter es könnte. Ich schätze es sehr, wenn es eine offizielle Seite gibt, die guarded_open_np mit all ihren Parametern erwähnt.

    
Krypton 16.08.2013, 10:22
quelle

1 Antwort

2

Aus den Informationen, die hier sind, glaube ich nicht, dass wir eine solide Antwort geben können, obwohl CodaFi's ein guter Vorschlag ist.

Das heißt, hier sind einige Referenzen, die hilfreich sein können, um Ihnen die Werkzeuge zu geben, um sich selbst zu finden:

Zuerst wissen Sie wahrscheinlich schon, aber lernen Sie mehr über Register und den Stack.

Bei der Montage eine Funktion aufzurufen, Sie in der Regel etwas folgen ein Application Binary Interface (ABI) genannt, die nur Konventionen aufstellt wie, wo Funktionen erwarten, dass ihre Argumente sein (Register, Stack etc.), die ein Funktionsaufruf registriert darf Ändern Sie und so weiter .

Da dies iOS, sollten Sie bei der Procedure Call Standard for suchen werden ARM Architektur und die iOS ABI Function Call-Führer .

Wenn Sie den Abschnitt "Basic Procedure Call Standard" im ersten Link oben betrachten, können Sie feststellen, dass Funktionsaufrufe erwarten, dass ihre ersten vier Argumente in den Registern r0 ~ r4 stehen.

Für Ihre Untersuchung wollen Sie wahrscheinlich herausfinden, was sich in diesen Registern befindet, bevor Sie in den guarded_open_np-Stub verzweigen. XCode kann die Assembly einer Datei für Sie ausspeien, und Sie sollten in der Lage sein, Breakpoints darauf zu setzen; Verwenden Sie dann die register read Befehl in llvm Sie alle Registerinhalte anzuzeigen (beachten Sie einige der Register nur Speicherstellen enthalten, die Sie mit den memory read LLDB Befehle zu untersuchen).

Für ein bisschen mehr in iOS Montage Graben, empfehle ich Mike Ash 3-teiligen Blog-Eintrag "Auseinanderbauen der Assembly" Teile 1 , 2 und 3 . Dann magst du vielleicht seinen letzten Post auf den ARM 64 Bit Updates . Dies sind informelle Ressourcen, die Ihnen aber helfen, sich schnell mit der Scanning-Montage vertraut zu machen und im Allgemeinen zu wissen, was dort vor sich geht.

    
Ncat 09.10.2013, 08:54
quelle