【发布时间】:2015-08-12 21:13:47
【问题描述】:
我正在对 iPhone 如何管理堆和堆栈进行一些研究,但很难找到关于这方面的良好信息来源。我正在尝试追踪密码是如何保存在内存中的,即使在 NSString 被释放后也是如此。
据我所知,一旦 ARC 中的释放计数降至 0,iPhone 将不会清除内存内容(写入零或垃圾)。因此,带有密码的字符串将一直存在于内存中,直到该内存位置为被覆盖。
Xcode 中有一个调试选项Malloc Scribble,通过启用/禁用此选项(和禁用 Zombies)以及在模拟器的内存转储之后(使用gcore) 我可以检查内存中的内容是否已替换为 0x55。
我想知道这是否可以通过 Apple Store 构建完成,用垃圾数据填充已释放的内存,我假设 iPhone 默认不会这样做是否正确,或者是否有任何其他更好的选择处理内存中的敏感数据,以及使用后应该如何清除(可能是可变数据?写入那个内存位置?)
【问题讨论】:
标签: ios objective-c iphone c security