如何在安装前扫描 IPA 文件是否包含恶意软件

在从 App Store 之外安装 IPA 文件之前,花几分钟检查一下,就能避免安装到一个会窃取登录信息、通讯录或位置数据的修改版应用。本指南介绍了检测 IPA 是否含有恶意软件的实用方法,从快速的在线扫描到亲自查看文件内部,以及如果你已经安装了可疑应用该怎么办。最后核实时间:2026 年 10 月 27 日,参考了 VirusTotal 和 MobSF 的文档,以及 Apple 针对 iOS 26 的《iPhone 用户指南》。

先说风险

  • 没有任何扫描能证明一个 IPA 是安全的。扫描工具只能发现已知的威胁,新出现或隐藏得很好的修改版照样可以蒙混过关。
  • 把文件上传到在线扫描工具意味着这个文件会被共享出去。VirusTotal 的文档中写道,结果会”在审查合作方之间”共享,并且”提交的文件或网页内容也可能与 VirusTotal 的高级会员客户共享”。千万不要上传含有你自己数据或私有构建版本的 IPA。
  • 来源比扫描结果更重要。来自开发者自己发布页面的文件,比被陌生人重新上传的同一个应用风险要低得多。

快速检查清单

检查项 耗时 所需条件 能发现什么
来源调查 5 分钟 一个浏览器 假冒网站、重新上传的文件、口碑不佳的来源
文件哈希值 1 分钟 终端、一个已公开发布的哈希值 文件在发布者发布之后被篡改的任何情况
VirusTotal 几分钟 一个浏览器 杀毒引擎已经能识别的已知恶意软件
查看 IPA 内部 10 分钟 解压工具,最好用 Mac 被注入应用中的额外库文件
MobSF 15 分钟以上 Docker,或在线演示版 危险权限、追踪器、硬编码的网址和密钥

为什么 IPA 文件可能存在危险

IPA 文件本质上是一个包含 iOS 应用的 ZIP 压缩包。任何掌握相应工具的人都能拿一个正版应用,在其中加入自己的代码,重新打包后再分享出去。这样得到的应用看起来和用起来都和原版一样,但被加入的代码可以在后台运行,拥有你授予该应用的任何权限。这种做法被称为重打包或修改版应用,也是恶意软件绕过 App Store 进入 iPhone 的主要途径。

侧载工具会在安装前用新的证书重新对每个应用进行签名,因此 iPhone 上显示的签名信息并不能告诉你这个应用到底是谁做的。这就是为什么在安装之前,需要先完成下面这些检查。

方法一:调查来源

请先做这一步,因为这是唯一能发现扫描工具尚未收录问题的检查方式。

  • 优先选择开发者自己发布页面提供的下载,例如应用在 GitHub 上的 releases 页面,而不是任何镜像站。
  • 在 Reddit(r/sideloaded、r/jailbreak)上搜索该文件或来源的确切名称,看是否有人反馈过问题。
  • 对全新上线的网站、匿名文件托管链接,以及没有任何历史记录的 Telegram 频道要保持警惕。
  • 对那些免费提供付费应用的网站要格外警惕。从定义上讲,这类文件必定已被人修改过。

我们整理的 IPA 资源库与仓库 列表介绍了筛选来源时需要关注的要点。

方法二:核对文件哈希值

有些开发者会在下载链接旁公布 SHA-256 哈希值。哈希值相当于文件的指纹:哪怕只有一个字节发生变化,哈希值也会完全不同。如果你文件的哈希值与官方公布的一致,就说明你拿到的正是开发者发布的那个文件。

  • Mac: 打开终端(Terminal),运行 shasum -a 256 /path/to/app.ipa
  • Windows: 打开 PowerShell,运行 Get-FileHash C:\path\to\app.ipa -Algorithm SHA256
  • Linux: 运行 sha256sum /path/to/app.ipa

只有当哈希值来自开发者本人,而不是提供文件给你的同一个网站时,比对结果才有意义。镜像站上公布的哈希值,只能证明这个文件就是该镜像站上传的那一个,仅此而已。

方法三:使用 VirusTotal 扫描

VirusTotal 是一项免费服务,其官方文档称可以用”超过 70 款杀毒引擎和 URL/域名黑名单服务”对文件进行检测。

  1. 在电脑上打开 virustotal.com。
  2. 选择File,选中该 IPA 文件,然后等待扫描完成。
  3. 在上传之前,先把文件的 SHA-256 哈希值粘贴到 Search 选项卡中。如果已经有人扫描过同一个文件,你无需上传就能直接看到结果。
  4. 要看具体的检测名称,而不只是看检测数量。

如何解读结果:

  • 多个引擎都指向同一个恶意软件家族:不要安装。
  • 只有一两个引擎检出,且名称很笼统:有可能是误报。VirusTotal 的文档也提到,该功能同样有助于发现误报,即”被一个或多个扫描器误判为恶意的正常无害项目”。可以查看结果页面下方的社区评论,并再次检查来源是否可靠。
  • 没有任何检出:说明目前没有引擎把它识别为恶意软件,但这并不等于文件本身一定安全。

方法四:查看 IPA 内部文件

因为 IPA 本质上是一个 ZIP 文件,所以你可以在不安装它的情况下打开查看。

  1. 复制该文件,并把副本的扩展名从 app.ipa 改为 app.zip。
  2. 解压它。里面有一个 Payload 文件夹,其中包含一个 AppName.app 文件夹(在 Mac 上,右键点击它并选择“显示包内容”)。
  3. 打开 Info.plist,检查 bundle identifier(应用标识符)和版本号,它们应该与你预期的应用一致。
  4. 在 Frameworks 文件夹和应用文件夹中查找 .dylib 文件。被注入的代码通常会以一个额外的 dylib 形式出现,其名称与该应用毫无关联。

在安装了 Xcode command line tools 的 Mac 上,有两条命令可以进一步排查:

  • otool -L Payload/AppName.app/AppName 会列出该应用主程序加载的所有库。如果其中出现一个指向应用内部、但并非其自身 framework 的库路径,就是一个危险信号。
  • codesign -dv --verbose=4 Payload/AppName.app 会显示该文件的签名者信息。将其与你预期的开发者进行比对,但要注意,很多 IPA 是以未签名或重新签名的方式分发的。

有些经过修改的应用(比如 tweaked app)本身就设计为包含额外的 dylib。这种情况下,问题不在于是否存在额外文件,而在于你是否信任添加它的人。

方法五:使用 MobSF 进行深度分析

Mobile Security Framework(MobSF)是一款免费的开源工具。其 README 中提到,其静态分析器支持包括 IPA 文件在内的多种应用二进制文件,并列出了诸如恶意软件分析和隐私分析等用途。针对 IPA 的 MobSF 报告会显示诸如请求的权限、网络地址以及应用中发现的字符串等信息。

  • 自行运行:README 中提供了 Docker 部署方式:先执行 docker pull opensecurity/mobile-security-framework-mobsf:latest,再执行 docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest,然后在浏览器中打开 localhost:8000 即可。
  • 在线使用:README 中链接了一个在线静态分析工具,地址是 mobsf.live。与使用 VirusTotal 时一样,需要注意隐私问题:你是在把文件上传到别人的服务器上。

需要留意的是应用不应该拥有的权限(例如一个计算器却请求访问通讯录),以及不属于该应用开发者的网络地址。

如果你已经安装了可疑应用

  1. 删除该应用:长按图标,点按移除 App,然后点按删除 App。
  2. 检查设置 > 通用 > VPN与设备管理,移除任何你不认识的描述文件。
  3. 在设置 > 隐私与安全性中查看权限,并在其中查看App隐私报告,了解应用联系过哪些域名。
  4. 修改你在该应用中登录过的所有账户的密码,首先从你的 Apple 账户和邮箱开始。
  5. 如果你认为情况比较严重,请备份需要的数据,然后在设置 > 通用 > 传输或还原 iPhone > 抹掉所有内容和设置中抹掉 iPhone。

每项权限的具体操作步骤,请参阅我们关于如何撤销不受信任应用权限的指南。

良好习惯

  • 只要开发者有自己的发布页面,就优先从那里获取应用。
  • 如果公布了哈希值就进行核对,并且每次都用 VirusTotal 扫描一遍。
  • 只在应用确实需要某项权限来实现你所使用的功能时才授予该权限。
  • 如果你用的工具要求使用 Apple ID 进行 sideloading,就单独准备一个 Apple ID,这样主账户就不会有风险。

想了解更全面的内容,请查看我们的iOS sideloading 安全指南以及关于企业证书你需要了解的内容。

常见问题

我可以在 iPhone 上扫描 IPA 文件吗?

你可以在 Safari 中打开 virustotal.com,并从“文件”App 中上传文件。但要查看 IPA 内部内容以及运行 MobSF,则需要用电脑。

App Store 的审核能保护通过 sideloading 安装的应用吗?

不能。即使原版应用在 App Store 上架,通过 sideloading 安装的 IPA 也从未经过 App 审核。

VirusTotal 结果显示干净就足够了吗?

不够。这只说明没有引擎将该文件识别为已知恶意软件。你还需要结合可信来源以及对文件内部内容的检查来综合判断。

类似文章