10-Aplicar nueva firma
¿Este artículo continúa con otro punto de conocimiento básico de la preparación inversa? Primero introduzca los conceptos relevantes y luego utilice herramientas y automatización de scripts para realizar un proceso de renovación de firma con ejemplos.
El artículo anterior 09-Firma de la aplicación presentó en detalle todo el proceso de firma. En resumen, la firma es un mecanismo de seguridad de Apple. El sistema iOS solo permitirá ejecutar la aplicación si la firma es. válido. .
Refirmar significa reemplazar la firma original con la firma existente sobre la base de la APLICACIÓN original.
codesign está disponible después de instalar Xcode, y Xcode también usa esta herramienta para completar el proceso de firma. ¿Incluye el archivo con el cambio de firma?
Antes de usar la herramienta de diseño de código para volver a firmar, ¿conozcamos primero algunos comandos de terminal sobre firmas?
1. Ver la información de la firma
2. Enumere los certificados que se pueden firmar en el llavero
3. otool analiza la información del archivo macho y la exporta al archivo especificado
Entre ellos, cryptid es 0, lo que significa que no se utiliza ningún algoritmo de cifrado (es decir, desempaquetado), otros representan cifrado.
¿También puedes filtrar directamente para ver si el shell está roto?
4. Reemplazar la firma a la fuerza
5. Agregar permisos al archivo
6. Ver el archivo de descripción
7. firma macho
8. Comprimir el archivo de entrada en un archivo de salida
Aquí está el WeChat desgranado (7.0.8, por ejemplo, utilice una cuenta de desarrollador gratuita para volver a iniciar sesión en WeChat y luego instálela en un teléfono sin jailbreak). (El paquete ipa de WeChat (7.0.8) se adjuntará al final del artículo)
¿Firmar los marcos en el directorio de Marcos uno por uno (use su propio certificado gratuito)? > Cree un proyecto vacío y utilícelo. Archivos de descripción, ejecución y compilación de cuenta gratuita y máquina real.
Luego copie el archivo de descripción obtenido en el paquete de la aplicación WeChat.
¿Buscar el info.plist de WeChat y modificar el BundleId para generar el BundleId del archivo de descripción para nosotros?
¿Encontrar los permisos correspondientes?
¿Luego crear un? Archivo Entitlements.plist, ¿pegar el contenido del permiso en él?
¿Copiar el archivo de permisos (Entitlements.plist) al mismo directorio que WeChat.app en la carga útil?
¿Verificar la firma? información de WeChat.app nuevamente. ¿Ha sido reemplazada?
En este momento, instale el paquete WeChat.app en el teléfono a través de Xcode. ¿Debería instalarse normalmente? depurar->adjuntar al proceso->WeChat ¿Has depurado WeChat?
¿Cuáles son los pasos anteriores para volver a firmar?
¡Ya terminaste!
Lo anterior es para depurar WeChat a través de adjuntarlo al proceso. ¿Podemos depurarlo directamente y depurarlo conjuntamente como lo desarrollamos habitualmente? ¡Por supuesto! Consulte los siguientes pasos.
El shell es una herramienta interactiva especial que proporciona a los usuarios una forma de iniciar programas, administrar archivos en el sistema de archivos y procesos que se ejecutan en el sistema. Shell generalmente se refiere a una herramienta de línea de comandos. Le permite ingresar comandos de texto, que luego se interpretan y ejecutan en el kernel.
El script de Shell es un archivo de script que se coloca previamente en un archivo de texto con varios comandos para una ejecución única.
¿Cuáles son los comandos relacionados más utilizados?
Primero cree un nuevo archivo de script de shell shell.sh e ingrese el comando de terminal en él.
¿Como? ¿Se puede ver en la imagen de arriba?
Hace un momento usamos chmod +x para modificar los permisos de shell.sh, así que echemos un vistazo al concepto específico de permisos.
Tanto Unix como Linux son sistemas multiusuario y multitarea, por lo que dichos sistemas tienen los conceptos de usuarios y grupos. Entonces los permisos del mismo archivo también los tiene el usuario y grupo correspondiente.
A diferencia de Windows, Unix, Linux y macOS son todos sistemas multiusuario.
En el sistema Mac, ¿puedes usar el comando ls -l para ver todos los archivos en el? directorio del archivo actual, ¿atributos, por ejemplo?
El cuadro rojo más a la izquierda son los permisos, y a la derecha están el grupo al que pertenece el propietario del enlace, el tamaño del archivo, la fecha de la última modificación y el archivo. name
¿Hay 10 dígitos para los permisos?
En la imagen de arriba
¿Comparación de cada número de permiso: r: 4 (0100) w: 2? (0010) x: 1 (0001). La ventaja de este diseño es que se puede aplicar una operación OR bit a bit. Lo mismo se aplica a la enumeración de desplazamientos que estamos desarrollando.
Ejemplo
Si el permiso de un archivo es [!–rwxr-xr-x], entonces el ?
Usuario ?
Grupo? 4+1 = 5
Otro? 4+1 = 5
Entonces el comando es chmod 755. p >
¿Tabla de correspondencia entre números y permisos?
¿Por ejemplo?
¿La lógica de implementación del script es la misma que la lógica del código? El script completo es el siguiente:
¿Usar un teléfono con jailbreak para volcar el paquete ipa?
Después de romper el shell, dado que es un paquete genuino descargado en el teléfono con jailbreak, es necesario. para volcar la información del dispositivo compatible en info.plist (UISupportedDevices) eliminado. ¿Por supuesto que se puede escribir en un script?
Después de eliminar, ¿guardar y volver a empaquetar el ipa?
Se puede decir que volver a firmar la aplicación es el primer paso de la preparación inversa. Espero que todos puedan seguir los pasos de este artículo. Se dice que la práctica es el único criterio para probar la verdad.