Servidor de depuración del entorno de jailbreak de iOS
En un entorno de jailbreak, podemos usar fácilmente cycript y revelar para depurar aplicaciones, pero un problema es que no afectan el proceso y no hay forma de establecer puntos de interrupción para la depuración. revelar es principalmente para la depuración de interfaces. A veces necesitamos lldb para la depuración lógica.
Hay un proceso adicional Adjuntar al proceso en la depuración de xcode:
Después de que se ejecuta, se adjunta y puede depurar directamente con puntos de interrupción:
Y puede ver la depuración:
lldb en Xcode puede depurar aplicaciones en teléfonos móviles porque el servidor de depuración en el teléfono móvil abre servicios relacionados. Por lo tanto, en el entorno de jailbreak, solo necesitamos habilitar el servicio debugserver para usar LLDB para depurar aplicaciones de terceros de forma remota.
Mac puede ver los archivos de imagen correspondientes a diferentes versiones del sistema iOS en el directorio /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport:
Abrir dmg archivo, ingrese al directorio usr/bin para ver el debugserver. Este es el archivo que xcode instala en el teléfono:
Cuando xcode se conecta al teléfono por primera vez, se instalará el servidor de depuración en el teléfono.
Instalado específicamente en el directorio /Developer/usr/bin/ del teléfono móvil:
Copie el debugserver en el teléfono móvil y realice la verificación md5 con el de mac p>
Confirmación de verificación consistente md5.
Debido a problemas de permisos del debugserver, debugserver solo puede adjuntar programas instalados por Xcode de forma predeterminada. Es necesario volver a firmarlo para adjuntar otros programas. Cuando aparece No se pudo obtener la conexión desde un proceso gdb remoto, generalmente es un problema de permisos.
La herramienta ldid (debe instalarse) se utiliza para volver a firmar el servidor de depuración. Las funciones específicas de ldid se pueden ver directamente ingresando ldid en la terminal de la computadora:
Copiar. la exportación del servidor de depuración correspondiente a la versión móvil en el archivo de permisos de Xcode (el mío aquí es iOS14):
El contenido completo está relacionado con la versión de su propio sistema. Aquí está iOS14.0, que es para las dos arquitecturas de. arm64 y arm64e:
Modificado Luego vuelva a firmar (sin espacio después de -S):
ldid -S archivo de permisos archivo debugserver
Si desea reemplazar /Developer/usr/ con el debugserver nuevamente firmado en el directorio bin Entonces estás pensando demasiado. No tenemos permiso para modificar este directorio (directorio de solo lectura).
Luego colocamos directamente el servidor de depuración vuelto a firmar en el directorio /usr/bin/:
En este punto, el servidor de depuración en el teléfono móvil se ha configurado.
Antes de abrir el servidor de depuración móvil, primero agregamos una asignación a la asignación de puertos:
Para asignar dos puertos al mismo tiempo, se pueden usar scripts iproxy y python.
Ingrese al directorio /usr/bin/ e ingrese ./debugserver para ver qué funciones están disponibles:
Puede ver que podemos habilitarlo a través del id y nombre del proceso:
Dirección del host del servidor de depuración: número de puerto: un proceso de aplicación
Primero abra el servidor de depuración en el teléfono móvil:
Ingrese al estado de escucha.
Ingrese lldb directamente en la terminal mac y presione Enter para ingresar al entorno lldb, y luego conéctese:
proceso conectar connect://IP:port
Se necesitan unos segundos para conectar el timbre. Si aparece Target detenido, la conexión es exitosa y puede ingresar comandos directamente para depurar.
Referencia
/t/ios12-debugserver-lldb/14429