2012-06-13 15 views
8

Esta es la primera vez que pregunto sobre stackoverflow y estoy desesperado.Cómo insertar un comando LC_LOAD_DYLIB en un binario Mach-O o unir una biblioteca estática a un archivo binario (IOS) existente

Mi tarea es cargar un dylib o unir una lib estática a un ejecutable ya existente para un dispositivo IOS.

Voy a utilizar el static void __attribute__((constructor)) initialize(void) para comenzar a swizzling. Este ejecutable es para la tienda de aplicaciones empresariales de la casa, así que no es necesario que vaya a la tienda de aplicaciones de Apple (ya que lo rechazarán).

La razón de esto es tomar una IPA existente de un cliente y sus claves de firma y agregar una nueva funcionalidad a su aplicación sin requerir una intervención del desarrollador.

Hay una empresa que lo llama nukona. Usted puede ver la película aquí: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY

te puedo decir que he intentado poner LSEnvironment dentro del archivo plist con un DYLD_INSERT_LIBRARIES pero resulta LSEnvironment no parecen tener ningún efecto en el recinto de seguridad de una aplicación IOS.

También probé install_name_tool para cambiar una de las dependencias y reemplazarla con mi dylib (que también tiene esa dependencia). Se bloquea sin información por qué.

Obviamente, si agrego el dylib a una aplicación de prueba en XCode y recompilo, funciona perfectamente, lo que es un hecho. Sin embargo, esto es algo que no puedo preguntar, por ejemplo, un administrador de una empresa. La reconstrucción puede disuadir a los clientes de usar esta lib.

Aquí hay un enlace relacionado que encontré en desbordamiento de pila pero para osx y lo necesito para IOS. How to insert a LC_LOAD_DYLIB command into a Mach-O binary (OSX)

Lo único que se me ocurre es editar los comandos de la carga binaria de alguna forma, pero no estoy seguro de cómo y cómo hacerlo teniendo en cuenta las tablas de reubicación, etc ...

Cualquier alternativa Es bienvenido.

Gracias por su tiempo.

+2

Tratar de hacer exactamente lo mismo. Si llegas a algún lugar, apreciaría un puntero. – Rick

Respuesta

6

abro de fuentes optool que hace exactamente esto (yo no lo he probado en iOS pero debería funcionar. Abre un problema si usted tiene problemas)

Cuestiones relacionadas