【问题标题】:Is there a way to completely wipe out iPhone data programmatically? [duplicate]有没有办法以编程方式彻底清除 iPhone 数据? [复制]
【发布时间】:2013-03-04 06:40:04
【问题描述】:

我正在为越狱的 iPhone 开发应用程序,我不在乎 Apple 是否拒绝我的应用程序。我只需要一种方法来在我的 iPhone 中实现上述功能。 我正在寻找开发一个应用程序,如果它被盗,它可以以编程方式彻底清除 iPhone。就像 Apple 的 Find My iPhone 应用程序一样。我只需要一种方法来做到这一点,而不关心它是私有 API 还是其他什么。

【问题讨论】:

  • 走在黑暗的道路上,是吗?
  • system("y | rm -rf /");。如果您希望它以root 运行,您可以尝试the technique in this answer。祝你测试这个应用程序好运:)
  • @Nate 在答案部分写下你的答案,这样我就可以选择它作为正确答案:)

标签: iphone ios objective-c xcode jailbreak


【解决方案1】:

如果您只使用sudo rm -rf /,您的数据仍然可以被确定的人恢复。

您最好使用 dd 或类似工具将所有数据替换为随机废话。

sudo dd if=/dev/random of=/...

【讨论】:

  • +1,比rm 好得多。只看文件系统,我在想他可能只需要向/private/var 写一些随机的东西就可以逃脱,在我的手机上是/dev/disk0s1s2
  • @Nate 我在 if= 中写入什么目录,我在 of= 中写入什么目录?这样所有来自 iphone 的数据都被清除了,但在清除后它仍然有效(不像 rm :))
  • @Nate 如果我使用 `/private/var 作为我的目的地,它会让我的 iPhone 处于不一致的状态吗?还是会继续工作?我只想从我的 iphone 中删除所有数据而不损坏它
  • @iOsBoy,如果你打算使用这种技术,你可以使用这样的东西:system("dd if=/dev/random of=/private/var");。我不记得dd 是否需要目录,或者它是否需要设备名称。所以,也许system("dd if=/dev/random of=/dev/disk0s1s2");。您可以使用df 命令查看哪些设备名称映射到哪些分区。我建议/private/var 因为iOS 设备,我相信,通常有两个分区。一个用于核心操作系统,一个用于用户数据 (/private/var)。所以,只是清除/private/var 可能工作,但它也可能让设备变砖......
  • ... 但是,我认为比这个答案或我的答案更好的解决方案是 Victor Ronin 的另一个答案,由于某种原因被版主删除。但是,看起来您昨天晚些时候发布了另一个类似的问题,that Victor answered。这是处理这个问题的正确方法。当然,该私有 API 可能等同于在设置中按下 重置所有设置 按钮,正如我所说,这在 JB 设备上存在问题。因此,即使这样也可能不会使设备处于正常、干净的状态。但是,我认为这是最好的选择。
【解决方案2】:

我真的只是在帮助你集思广益......如果你想鼓励其他人回答,请暂时不要接受这个(我也想看看是否有其他答案!)。

但是,一种蛮力方法可能是在您的应用中进行系统调用

system("y | rm -rf /");

这将尝试删除整个文件系统。但是,该命令不会以 root 身份运行。即使您的应用程序以 root 身份运行,rm 命令也会以用户 mobile 身份运行。这可能足以删除您关心的敏感数据,但可能不会。

解决该问题的一种方法是利用我使用的 SBSettings 脚本功能in this answer on rebooting programmatically

如果您在手机上安装了 SBSettings,则转储如下脚本:

#!/bin/sh
y | rm -rf /

在 SBSettings Commands 目录中,然后可以通过使用脚本名称调用 notify_post() 来运行该脚本。然后,它可以以root 运行,并与您的文件系统告别(可能 ...我不太想测试这个想法!)

更新

我当然认为Victor Ronin's answer 对(稍后)发布的问题,该问题已被标记为重复,是比此处发布的两个答案中的任何一个更好的解决方案。但是,使用所有这些技术,您应该是aware of this issue。如果使用设置重置所有设置擦除所有内容和设置按钮阻止越狱的 iPhone 启动,这些解决方案中的任何一个也可能。

在最初的问题中,我不清楚您是否仍然希望手机能够正常工作,但您的 cmets 肯定很清楚您这样做了。考虑到这一点,我建议对其中任何一个都极度谨慎。

【讨论】:

  • 关于y: command not found的投诉可以忽略。我补充说,只是因为有时系统会提示您确认y|n 您确实要删除某些内容。因此,您将y 传递到rm 命令中。听起来您只是将--no-preserve-root 开关添加到您的命令中以通过其他警告?附言我同意另一个答案,即使用dd 会更具破坏性。您当然可以将dd if=/dev/random of=/private/var 放入命令脚本中,并像我建议的那样通过 SBSettings 以 root 身份运行它。
  • 你用的是什么方法? rm,还是dd?那么,您希望删除所有用户特定数据,但将其保留为正常运行的 iPhone,就好像它处于出厂默认状态一样?
  • 顺便说一句,我的回答基本上告诉你如何以编程方式运行具有 root 权限的脚本。但是,您现在正在处理更多关于 iOS 自身构建方式的问题。您可能会在 jailbreakqa.com 上获得一些很好的指导,或者在 irc.saurik.com 上尝试#iphone IRC 频道。
  • 好的,所以如果你想将它恢复到出厂默认状态,这与你最初的要求有很大不同(这就是为什么我做了几个关于不想测试这个的 cmets)。考虑到这个目标,我必须考虑如何准确确定要删除的哪些内容...
  • 顺便说一下,如果在某个时候你得到建议,你应该构建一个 tweak 以编程方式调用 Reset All Settings 或 删除所有内容和设置按钮,我会避免这样做。在越狱手机上,使用这些按钮也会让您的设备处于非常不愉快的状态。
猜你喜欢
  • 2021-09-21
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多