objective-c - 如何在越狱的 iOS 设备上监控应用程序的 API 调用?

标签 objective-c ios c jailbreak cydia

我正在对我没有源代码的 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/

相关文章:

iOS11 滚动偏移 - 过渡问题

iphone - 是否可以将应用程序永久部署到客户端?

c - 通过函数传递多个但不同的变量/输入?

c - 虽然我的 INT0 初始化为数字输入,但它仍然给出 2.8V,这使得按钮并没有真正做出改变

ios - 如何在 Swift 3/4 中更改 MapKit 的引脚颜色?

带有 '<' 和 '- option' 的命令行 C

objective-c - block 类型的 Objective-C 属性的语法(没有 typedef)

iphone - 如何对用户在 iPhone 中输入的电话号码的文本字段执行验证?

objective-c - 苹果LLVM编译器3.1错误?

objective-c - 类类型 Objective C