繁体   English   中英

通过运行未签名的可执行文件检测越狱的iOS设备

[英]Detect Jailbroken iOS Device by Running Unsigned Executable

目前,我正在尝试为我公司的开发人员创建一个可重用的objC安全库。 在这个库中,我希望有一个API来检测他们的iOS设备是否已越狱。 我注意到GregH的一个聪明的回应,它类似于iBooks的做法; 你运行一个未签名版本的可执行文件(iOS通过execve sys调用启动应用程序),如果它返回你知道设备是越狱。

问题:是否可以在iOS库中打包可执行文件并通过某些功能调用它? 如果是这样,最好的方法是什么呢?

谢谢你的帮助,kc

最后我检查过,沙盒应用程序甚至无法fork() 我不确定他们是否可以调用execve() 如果他们也做不到,那么只需调用execve()就可以了。

我不确定越狱干扰了多少。 可以进行越狱,允许您从未签名的应用程序运行未签名的应用程序,但如果调用者已签名则行为正常。

很可能在库中“打包”可执行文件:只需要static unsigned char const data [] = { ... }; ,将其写入文件chmod() ,并尝试执行它。

但是,在一天结束时,这可能会对您的用户造成伤害。 越狱手机并不意味着您的应用程序已被盗版。 除非你认识一个有越狱手机的人愿意做一些测试(以及不同的越狱测试),否则你可能会为自己做好准备“它只会崩溃!” 评论。

(如果它确实崩溃了,那么有人会来破解你的应用程序。在决定是否需要修复之前,最好谨慎并监控“问题”。)

越狱发生的次数比你想象的要多。 我已经将MobileSubstrate的检查添加到我们的自动崩溃报告符号脚本中,因为我们已经在很大比例的崩溃中看到过它。 OTOH,将应用程序安装到/ Applications中的崩溃比例(曾经是破解应用程序的传统应用程序;可能不再存在)可以忽略不计。

我试图通过从项目中添加可执行文件来在IOS应用程序中打包可执行文件,该项目的main()函数只是向我的项目返回一个整数。 部署时将此文件复制到手机上,但在没有执行权限的情况下复制。 尽管文件所有者与当前用户(移动设备)相同,但尝试chmod文件以使其执行会导致“不允许操作”错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM