0

我正在开始进行 Android 和 iOS 开发,因此相关资源的链接也将受到赞赏,只是我找不到任何相关的东西。

案例详细信息:我必须构建一个应用程序,将一些关键信息保存在一个变量中,该变量被创建、通过 ssl 加密连接发送并被销毁。设备上的任何其他进程都不应读取此变量。到目前为止,我知道可能发生两种情况:

[1] 一个服务或程序监视前台应用程序(这将是我的应用程序),然后它是否可以注入一些代码(例如让前台绑定到流氓服务)以读取有问题的变量内容。我知道存在操作系统保护措施,但是否有任何证据证明这种注入代码的能力?

[2] 服务或程序监视网络连接并记录通过线路发送的数据。应用程序是否有可能读取这样的网络数据?我知道存在可以记录每个应用程序交换的数据量的应用程序,但我不知道它们是读取系统日志文件还是实际监视连接。如果可以为这两个平台提供详细信息,将不胜感激。

4

1 回答 1

1

我只使用 android,所以这仅对 android 有效:

不,服务不能在前台注入代码,至少有两个原因:

  • 每个安装的应用程序都有自己的用户 ID,每个进程及其数据都受用户 ID 保护。所以一个进程不能访问另一个进程的内存。所以没有进程可以修改内存(通过插入代码)
  • java字节码转换成d​​alvik码,存放在只有系统进程可以写的地方。所以没有其他进程可以通过更改编译的 dex 文件来注入代码。

那就是系统提供的保护。当然,黑客可能会在某个库中发现漏洞,并且使用缓冲区溢出可能能够运行一些代码片段,但那是另一回事。另请注意,默认情况下进程的数据文件是私有的(其他进程无法看到),但进程可能具有对代码的读取权限。这意味着将私钥存储在代码中可能并不安全。

于 2011-10-21T11:28:45.240 回答