我向苹果提交了一个二进制文件,没有任何源代码。除了手动检查源代码外,Apple怎么知道使用了什么以及调用了什么API?
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
您可以在终端中使用以下单行代码在Mach-O程序中列出选择器:
otool -s __TEXT __objc_methname "$1" |expand -8 | cut -c17- | sed -n '3,$p' | perl -n -e 'print join("\n",split(/\x00/,scalar reverse (reverse unpack("(a4)*",pack("(H8)*",split(/\s/,$_))))))'
智慧大石
TA贡献1946条经验 获得超3个赞
假设您要使用一些私有API;目标C允许您从字符串构造任何SEL:
SEL my_sel = NSSelectorFromString([NSString stringWithFormat:\
@"%@%@%@", "se","tOr","ientation:"]);
[UIDevice performSelector:my_sel ...];
机器人或图书馆扫描如何捕捉到这一点?他们将不得不使用一些在运行时监视私有访问的工具来捕获此问题。即使他们构建了这样的运行时工具,也很难抓住它,因为此调用可能隐藏在一些很少使用的路径中。
- 3 回答
- 0 关注
- 489 浏览
添加回答
举报
0/150
提交
取消