Detectar dispositivo Jailbroken iOS ejecutando Ejecutable sin firmar

Actualmente, estoy intentando crear una biblioteca de security objC reutilizable para que los desarrolladores de mi empresa la usen. En esta biblioteca, me gustaría tener una API que detecte si su dispositivo iOS está jailbroken. Noté una respuesta inteligente de GregH que es similar a lo que está haciendo iBooks ; ejecuta una versión sin firmar de un ejecutable (iOS hace al inicio de la aplicación a través de la llamada de execve sys), si vuelve, sabrá que el dispositivo está jailbroken.

Pregunta: ¿Es posible empaquetar un file ejecutable en la biblioteca de iOS e invocarlo a través de alguna function? Si es así, ¿cuál podría ser la mejor manera de hacerlo?

Gracias por tu ayuda, kc

La última vez que lo comprobé, las aplicaciones sandboxed ni siquiera pueden fork() . No estoy seguro si pueden llamar a execve() . Si no pueden hacerlo, entonces simplemente llamar a execve() debería funcionar.

No estoy seguro de cuánta jailbreaking interfiera con esto. Es posible tener un jailbreak que le permita ejecutar aplicaciones no firmadas desde aplicaciones no firmadas, pero se comporta normalmente si la persona que llama está firmada.

Es obvio que sea posible "empaquetar" un file ejecutable en una biblioteca: Solo tiene static unsigned char const data [] = { ... }; , escríbalo a un file, chmod() , e intente ejecutarlo.

Al final del día, sin embargo, esto puede ser un flaco service para sus usuarios. Un teléfono Jailbroken no significa que tu aplicación haya sido pirateada. A less que conozca a alguien que tenga un teléfono con jailbreak dispuesto a realizar algunas testings (y probar con diferentes jailbreaks), podría estar configurándose para "¡Simplemente falla!". revisiones

(Y si falla, entonces alguien aparecerá y descifrará su aplicación. Es mejor ser discreto y controlar el "problema" antes de decidir si necesita reparación).

Jailbreaks ocurren con más frecuencia de lo que crees. Agregué cheques para MobileSubstrate a nuestro script automatizado de informe de simulación de fallos porque lo hemos visto en una proporción significativa de fallas. OTOH, la proporción de fallos en los que la aplicación está instalada en / Aplicaciones (que solía ser tradicional para aplicaciones rotas, tal vez ya no) es insignificante.

He intentado empaquetar un ejecutable en una aplicación IOS agregando el file ejecutable de un proyecto cuya function principal () simplemente devuelve un integer a mi proyecto. Este file se copy al teléfono al desplegarse, pero se copy sin permissions de ejecución. Intentando chmod el file para darle resultados de ejecución en un error "Operación no permitida", a pesar de que el propietario del file es el mismo que el usuario actual (mobile).