我正在对我没有源代码的 iOS 应用程序进行审查。为了更好地控制环境,我在越狱的 iPad 上运行该应用程序。
我希望能够监控应用程序正在进行的 API 调用...理想情况下,我希望找到类似 Rohitab 的基于 MS Windows 的东西 API Monitor ,但适用于 iOS。
我做了一些研究,发现了 KennyTM 的一个名为“Subjective-C”的项目,它似乎可以满足我的需要。我实际上一直在使用一个 cycript 脚本,以及 libsubjc.dylib available on the Google code site .
但是,我一直无法弄清楚如何正确地让它开始记录应用程序的调用。这是 link to the cycript script, written by the author主观-C(libsubjc)。我也粘贴了下面的脚本。
/*
libsubjc.cy ... Use libsubjc in cycript.
Copyright (C) 2009 KennyTM~ <kennytm@gmail.com>
[...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=}");
我已经能够加载 libsubjc cycript 脚本,并调用 SubjC_start 函数。但是,如何为以 dlfun("SubjC_set_file", "v^{sFILE=}");
开头的行指定输入文件句柄有没有人成功地使用带有 Subjective-C 库 (libsubjc.dylib) 的“libsubjc.cy”cycript 脚本来监控应用程序的 API 调用?
更新
这至少生成了输出文件,但我没有在输出文件 (/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();
或者,如果有人知道另一种在越狱设备上监控 API 调用(无源代码)的方法,请告诉我!
最佳答案
我不知道 API Monitor 的直接等效项。然而,Frida是一种流行的移动应用程序检测工具,具有 tutorial on iOS usage .安装后,您可以使用 frida-trace -U -i "CCCryptorCreate*"Twitter
等命令跟踪 API 调用,以跟踪从 Twitter 应用程序到以 CCCryptorCreate
开头的函数的调用.
关于objective-c - 如何在越狱的 iOS 设备上监控应用程序的 API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12896146/