Que yo sepa, las aplicaciones de espacio aislado no puede ni siquiera fork()
. No estoy seguro si pueden llamar al execve()
. Si no pueden hacer ninguna de las dos cosas, simplemente debe llamar al execve()
.
No estoy seguro de cuánto interrumpe el jailbreaking con esto. Es posible tener un jailbreak que le permita ejecutar aplicaciones sin firmar desde aplicaciones sin firmar pero que se comporte normalmente si la persona que llama está firmada.
Obviosuly es posible "empaquetar" un ejecutable en una biblioteca: solo tiene static unsigned char const data [] = { ... };
, escríbalo en un archivo, chmod()
, e intente ejecutarlo.
Al final del día, sin embargo, esto puede ser un perjuicio para sus usuarios. Un teléfono Jailbroken no significa que su aplicación ha sido pirateada. A menos que conozca a alguien con un teléfono con jailbreak que esté dispuesto a hacer algunas pruebas (y pruebas con diferentes jailbreaks), es posible que se esté preparando para "Simplemente se bloquea". revisiones.
(Y si se cuelga, entonces alguien va a llegar y romper su aplicación. Es mejor ser discreto y monitorear el "problema" antes de decidir si necesita ser reparado.)
Jailbreaks ocurren con más frecuencia de lo que pensar. Agregué cheques para MobileSubstrate a nuestro script automatizado de informe de fallos, porque lo hemos visto en una proporción significativa de fallas. OTOH, la proporción de bloqueos donde se instala la aplicación en/Aplicaciones (que solía ser tradicional para las aplicaciones crackeadas, tal vez ya no lo es) es insignificante.
En lo que respecta a 'execve()', tener una llamada a la función, ya sea que esté funcionando o no, probablemente desconecte el detector "no compatible/API no documentada" de Apple y obtenga su aplicación rechazada. – duskwuff
@duskwuff: si está en un encabezado, entonces está "documentado" lo suficiente como para no disparar el detector. Hasta donde yo sé, los encabezados son exactamente lo que usa su sistema automatizado para decidir si algo es "público" o no. –