¿Hay algún lugar donde pueda iniciar la progtwigción de Ajustes de MobileSubstrate?

Después de una búsqueda aquí en el foro, encontré una pregunta así, y me networkingireccionó a un tutorial que les dio algunas instrucciones básicas sobre cómo manipular SpringBoard con CapitainHook.

Para comenzar, me gustaría hacerlo solo con% de ganchos normales. ¿Algún indicio donde pueda comenzar?

Entonces, dado que (espero) estoy muy lejos de un noob con la progtwigción de MobileSubstrate ahora, y vi esta pregunta como bastante popular, decidí crear una respuesta que cubra todo lo que necesita saber sobre el tema con un poco de suerte.

Esta pequeña introducción está destinada a quien tenga un conocimiento mínimo sobre Objective-C y sepa lo que está haciendo.

NOTA : Me referiré a la ruta de installation de theos como $THEOS . Esto podría ser ~/theos , /var/theos , /usr/theos … Sí.

La forma más popular de crear extensiones de MobileSubstrate, también conocidas como tweaks , está utilizando la suite de creación de Theos de Dustin Howett . Los detalles siguen:

Que es theos

Entonces, deberíamos comenzar con lo que theos no es:

  • El sistema operativo
  • Un dios griego
  • Un comstackdor

Y, por supuesto, lo que theos no hace :

  • Te enseña a codificar.
  • Crea ajustes sin tener que pensar
  • Configura un entorno de edificio completo y / o instala el SDK de iOS.

Theos es un set de herramientas de desarrollo multiplataforma para administrar, desarrollar y desplegar el software iOS sin el uso de Xcode , que incluye:

  • Un sistema de compilation robusto impulsado por GNU Make , que hace que sus Makefiles se puedan desplegar fácilmente en todas partes con theos también instalados.

  • NIC , un sistema de templates de proyectos que crea proyectos vacíos listos para build para diferentes propósitos.

  • Logos , una biblioteca de directivas basada en preprocesador integrada diseñada para simplificar el desarrollo de la extensión de MobileSubstrate y con una generación de código óptima.

  • Embalaje automatizado : Theos es capaz de crear directamente packages DEB para su distribución en Cydia, el medio más popular de distribución de packages en la escena de jailbreak.

¿Cómo instalar theos?

  • En OSX : tenga el iOS SDK instalado y siga estas instrucciones .
  • En iOS : instale el package de herramientas recomendadas de installtheos3 desde Cydia y ejecute installtheos3 .
  • En Linux : encuentre un medio para tener la cadena de herramientas instalada y siga estas instrucciones .
  • En Windows : Nada es imposible, pero si realmente logras hacerlo, avísame. :PAG

¿Cómo usar theos?

Esta es una pregunta muy solicitada y demasiado vaga. Dado que theos es un set completo de herramientas de desarrollo, no tiene sentido preguntar cómo usarlo , pero más específicamente, preguntar cómo crear software usando theos .

En primer lugar, siempre tenga a mano la Referencia de Theos Makefile . Cubre los aspectos básicos de la creación de un Theos Makefile, y eso incluye resolver sus problemas de vinculación agregando un marco o marco privado al proyecto .

Ahora, puede crear su propio Makefile desde cero, crear su pequeño clon / enlace simbólico y comenzar a codificar, pero theos facilita este paso. Puedes usar nic.pl

Aquí se puede encontrar un ejemplo muy simple de ejecutar NIC para crear algo. Es muy sencillo y te prepara de inmediato para la progtwigción.

Ahora, aquí es donde comenzamos a volver al tema.

Crear un tweak con theos

En primer lugar, no ejecute NIC cuando esté dentro de $THEOS/bin . NIC creará el directory del proyecto exactamente desde donde lo está ejecutando, y evitará que cualquier proyecto se cree en $THEOS/bin . Por lo tanto, terminarás con un error simple que se puede evitar creando el directory del proyecto en algún lugar decente.

Ejecute $THEOS/bin/nic.pl y elija la plantilla iphone/tweak . Se le solicitará información simple que bien puede saber cómo responder, excepto el último campo: MobileSubstrate bundle filter .

Dado que una gran parte de MobileSubstrate no es solo el hooker (la biblioteca que cambia los methods / funciones originales con los suyos), sino también el cargador (la parte que consigue que su enganche se inserte en ciertos processs), debe proporcionar esta información básica para que Loader sepa dónde cargar su pellizco. Este campo no es más que el identificador de package para la aplicación donde se insertá este proyecto .

com.apple.springboard , la opción pnetworkingeterminada es el identificador de package para SpringBoard, la aplicación que es:

  • La pantalla de inicio de iOS
  • El lanzador / exhibidor de aplicaciones comunes
  • La barra de estado de iOS
  • Manejador de algunos processs de background esenciales de alto nivel.

Por lo tanto, hay muchos ajustes, alterando el comportamiento de algo tan trivial como el inicio de la aplicación a algo así como el aspecto de la interfaz de usuario de pantalla completa.

Progtwigr un tweak con Logos

Ahora, el directory generado por NIC contendrá:

  • The Theos Makefile , donde cambiará la información relacionada con la compilation
  • El file de control , donde cambiará la información relacionada con el empaquetado.
  • Un enlace simbólico (o atajo) a $THEOS llamado theos/
  • El file de código principal, pnetworkingeterminado como Tweak.xm . Ya está agregado al Makefile para comstackr, ¡así que puedes comenzar a codificarlo de inmediato!

Sobre saber qué hacer

Ahora, no tiene el código fuente de SpringBoard por ahí, y no puede adivinar qué methods conectarse desde la nada. Por lo tanto, necesita un set de encabezados SpringBoard . Para eso, debe usar una herramienta llamada class-dump-z y ejecutarlo en el binary SpringBoard (que se encuentra dentro del sistema de files iOS) para get files de encabezado que incluyen todas las declaraciones de class y sus methods dentro de la aplicación.

A partir de eso (una cuestión de adivinar y registrar una llamada de método está implicada) puede comenzar a jugar con lo que quiere en un tweak.

Por supuesto, si no está enganchando SpringBoard puede usar class-dump-z como lo haría en otros binarys, como UIKit , MobileSafari , etc.

Tenga en count que, al invertir las aplicaciones de App Store , se cifrarán. Deberá descifrarlos (desafortunadamente no puedo decirles cómo hacerlo), y luego ejecutar run class-dump-z en ellos.

Al get encabezados privados

Los materiales como packages de preferences requieren los encabezados para frameworks privados, en ese caso los encabezados del marco de Preferences . De lo contrario, obtendrás un sinfín de errores de statement faltantes (como supongo que podrías asumir).

Conseguirlos tiene la misma lógica aplicada al paso anterior. Ejecute class-dump-z , en este caso, el binary Preferences y arroje los encabezados en su INCLUDEPATH . INCLUDEPATH es donde el comstackdor searchá los encabezados que incluye como #include <stdio.h> . Sí, stdio.h está dentro de uno de los directorys que INCLUDEPATH un comstackdor.

Cuando compile con un Theos Makefile, $THEOS/include count como parte de su INCLUDEPATH , lo que significa que puede simplemente tirar sus encabezados vaciados allí e includelos más tarde.

(Tenga en count que los encabezados dumpeados de class no siempre son perfectos, por lo que es probable que tenga un par de errores de compilation relacionados con el encabezado que se puedan solucionar fácilmente con algo como eliminar una directiva #import o cambiarla, o agregar un par de declaraciones)

Consejos de código

  • No puede vincular a SpringBoard, por lo que siempre que necesite una class de SpringBoard debe usar la directiva Logos %c o la function objc_getClass , tal como se define en <objc/runtime.h> para getla. Ejemplo: [%c(SBUIController) shanetworkingInstance] , [objc_getClass("SBUIController") shanetworkingInstance] .
  • Cuando no sepa qué hace un método o cómo funciona algo en SpringBoard, intente desarmarlo con IDA u otros. Utilizo IDA Demo (<- noob!) Para mi desensamblaje.
  • Mirar el código de ejemplo es increíblemente útil tanto para aprender como para descubrir cómo funciona algo dentro de SpringBoard u otros (de nuevo …). Grandes personas en GitHub para tener un proyecto mirado son rpetrich , chpwn , DHowett , EvilPenguin y, por supuesto, mucho más.
  • Para encontrar también sobre cómo funciona SpringBoard y otros (…), ¡echa un vistazo al artículo de una class en el iPhone Dev Wiki !

Epílogo

Espera, ¿dónde está la parte buena? ¿Dónde aprendo sobre la encoding en Tweak.xm ?

Bueno, la pregunta original fue en realidad ¿Cómo iniciar la progtwigción de Ajustes de MobileSubstrate? . Estás configurado, con suerte, con todos los encabezados colocados, listo para escribir en make y ver tu proyecto comstackdo mágicamente con theos.

¡Todo lo que necesitas hacer ahora es realmente cavar en tus encabezados o tu desassembly y enganchar, llamar, etc.!

La reference de logotypes contiene exactamente cómo enganchar y usar otras características de Logos, y el artículo MobileSubstrate en el devwiki también es una gran lectura.

Buena suerte. Y en caso de dudas, no dudes en unirte al canal irc.saurik.com #theos IRC. Es una excelente manera de discutir temas relacionados con los temas y hacer preguntas. Estoy principalmente allí, junto con otras personas muy inteligentes;)

Estás buscando Theos creado por DHowett. Theos te permite hacer ajustes, pero no te da todo lo que necesitas. No obtienes todos los encabezados para iOS, por lo que tienes que class-dump-z the frameworks / private-frameworks desde iOS SDK. Comienza aquí: http://iphonedevwiki.net/index.php/Theos/Getting_Started , o únete a irc.saurik.net #theos para get más ayuda. También puedes ver mis proyectos que usan theos: https://github.com/evilpenguin

Parece que estás buscando theos. Eche un vistazo a esto , debería ayudarlo a comenzar.