Ich führe eine Überprüfung einer iOS-Anwendung durch, für die ich nicht über den Quellcode verfüge. Um mehr Kontrolle über die Umgebung zu erlangen, führe ich die Anwendung auf einem iPad mit Jailbreak aus.
Ich möchte in der Lage sein, die API-Aufrufe zu überwachen, die die Anwendung macht … idealerweise möchte ich etwas wie MS Windows-basiertes Rohitab finden API-Monitorsondern für iOS.
Ich habe etwas recherchiert und ein Projekt von KennyTM namens “Subjektiv-C” Das scheint, dass es tun kann, was ich brauche. Ich habe tatsächlich ein Cycript-Skript zusammen mit dem verwendet libsubjc.dylib, verfügbar auf der Google-Code-Site.
Ich konnte jedoch nicht herausfinden, wie ich es richtig dazu bringen kann, Anrufe für eine App zu protokollieren. Hier ist die Link zum Cycript-Skript, geschrieben vom Autor von Subjektiv-C (libsubjc). Ich habe das Skript unten auch eingefügt.
/*
libsubjc.cy ... Use libsubjc in cycript.
Copyright (C) 2009 KennyTM~ <[email protected]>
[...GPL3...]
*/
dlopen("libsubjc.dylib", 10);
if (!dlfun) {
function dlfun(fn, encoding, altname) { var f = new Functor(dlsym(RTLD_DEFAULT, fn), encoding); if (f) this[altname || fn] = f; return f; }
}
dlfun("SubjC_start", "v");
dlfun("SubjC_end", "v");
dlfun("SubjC_set_file", "v^{sFILE=}");
dlfun("SubjC_set_maximum_depth", "vI");
dlfun("SubjC_set_print_arguments", "vB");
dlfun("SubjC_set_print_return_value", "vB");
dlfun("SubjC_set_print_timestamp", "vB");
SubjC_Deny = 0, SubjC_Allow = 1;
dlfun("SubjC_clear_filters", "v");
dlfun("SubjC_filter_method", "vi#:");
dlfun("SubjC_filter_class", "vi#");
dlfun("SubjC_filter_selector", "vi:");
dlfun("SubjC_default_filter_type", "vi");
dlfun("SubjC_filter_class_prefixes", "viI^*");
dlfun("SubjC_filter_class_prefix", "vi*");
dlfun("fopen", "^{sFILE=}**");
dlfun("fclose", "i^{sFILE=}");
Ich konnte das Skript libsubjc cycript laden und die Funktion SubjC_start aufrufen. Wie gebe ich jedoch ein Eingabedateihandle für die Zeile an, die mit beginnt dlfun(“SubjC_set_file”, “v^{sFILE=}”);
Hat jemand das Cycript-Skript “libsubjc.cy” mit der Subjective-C-Bibliothek (libsubjc.dylib) erfolgreich verwendet, um die API-Aufrufe einer App zu überwachen?
AKTUALISIEREN
Dies generiert zumindest die Ausgabedatei, aber ich sehe keine Informationen in der Ausgabedatei (/tmp/test.txt).
cycript -p SpringBoard libsubjc.cy; cycript -p SpringBoard
f = fopen("/tmp/test.txt", "w");
SubjC_set_file(f);
SubjC_set_maximum_depth(15);
SubjC_set_print_arguments(YES);
SubjC_set_print_return_value(YES);
SubjC_set_print_timestamp(YES);
SubjC_default_filter_type(SubjC_Deny);
SubjC_start();
//do stuff
SubjC_end();
Oder, wenn jemand eine andere Möglichkeit kennt, API-Aufrufe (ohne Quellcode) auf einem Gerät mit Jailbreak zu überwachen, lassen Sie es mich bitte wissen!
verwandt: Protokollieren von objc_msgSend auf iOS
– Benutzer529758
15. Oktober 2012 um 20:59 Uhr
Der Autor des Tools, @KennyTM, befindet sich im Stapelüberlauf. Vielleicht wandert er an diesem Posten vorbei und hat ein paar Ideen?
– Nate
2. November 2012 um 8:14 Uhr
stackoverflow.com/questions/9108920/…
– TZubiri
15. Februar um 2:58 Uhr
Ein Simulator könnte besser geeignet sein als ein Gerät mit Jailbreak.
– TZubiri
15. Februar um 2:59 Uhr