我正在开始进行Android和iOS开发,因此也很感谢与相关资源的链接,只是我找不到任何相关性。

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

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

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

最佳答案

我仅与android合作,因此这仅对android有效:

不,由于(至少)两个原因,服务无法在前台中插入代码:


每个已安装的应用程序都有其自己的用户ID和每个进程,其数据受用户ID保护。因此,一个进程无法访问另一进程的内存。因此,任何进程都不能修改内存(通过插入代码)
Java字节码将转换为dalvik码,并存储在只有系统进程才能写的地方。因此,没有其他进程可以通过更改已编译的dex文件来注入代码。


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

关于android - android/iphone-后台进程或服务可以在前台应用中注入(inject)代码或读取变量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7848398/

10-14 17:22
查看更多