如何从 iOS 应用程序中删除这些损坏的选择器

How to remove these mangled selectors from iOS app

我需要帮助删除我的 iOS 应用程序中已知的错误选择器。

Apple 拒绝了我的应用,声明:

Regarding Guideline 2.3.1, this app is verified to contain mangled selectors such as - x7kQPFEZS4af59md1eVMqf42YSTGAZVO: and i5B8qlaSJwvmVviceDOQkqQ0vwGq35XMmtV81zlsmHnws.

我尝试了 运行 nm 命令列出所有符号,然后使用 grep 搜索上述选择器:

grep -r x7kQPFEZS4af59md1eVMqf42YSTGAZVO .

grep -r i5B8qlaSJwvmVviceDOQkqQ0vwGq35XMmtV81zlsmHnws .

两个 grep 显示如下结果:

Binary file ./Payload/MyAppName.app/MyAppName matches

MyAppName 是一个二进制文件(unix 可执行文件)。

如何进一步从我的 iOS 应用程序中删除这些损坏的选择器? (或至少找到创建此选择器的代码/框架)

我使用反汇编程序 Hopper 找到了一个包含损坏的选择器的库。我遵循了这些步骤:

  1. 从 Xcode 项目创建 .ipa 文件(不确定它是作为开发还是 App Store 构建导出,您可能需要分别尝试)。
  2. 解压缩 .ipa 文件
  3. 打开Hopper应用程序,解压后将.app文件拖放到Payload文件夹中。
  4. 询问时将其加载为 'FAT archive'。
  5. 让应用程序完成扫描。
  6. 在左侧菜单中搜索错误的选择器名称。
  7. Select 匹配的选择器,在右侧的详细信息窗格中,我可以找到一些特定于项目的 class / 方法名称。我在我的项目中搜索了这些 Class 和方法名称并找到了库。

在我删除该库后应用程序获得批准。