Explique por qué la época del iPhone cambió a 1970 y se convirtió en un ladrillo.
Espero que no. Aprendí Pruébelo probándolo yo mismo...
De hecho, no necesita conocimientos especiales de informática para comprender por qué el iPhone cambió la hora a 1970:
Tiene una rica experiencia en la investigación de errores. En dispositivos iOS y Mac, el técnico Tom Scott cree que se trata de un problema causado por un desbordamiento insuficiente de enteros de marca de tiempo UNIX detrás del sistema iOS.
Con este fin, escribimos una versión de texto de una nota tonta para contarte por qué la época del iPhone pasa a ser 1970.
Hora UNIX
La hora UNIX es una configuración introducida por los ingenieros informáticos para expresar el tiempo más claramente en el sistema.
El tiempo de expresión de la gente normal es el siguiente: 17 de febrero de 2016, 12:54:41.
El tiempo de expresión del sistema UNIX es el siguiente: 145568481.
Te preguntarás: ¿Por qué las computadoras no pueden expresar el tiempo como la gente normal?
Si has estudiado geografía en la escuela secundaria, es posible que comprendas que hay 24 zonas horarias en el mundo y que la hora en cada zona horaria es diferente al mismo tiempo. De esta forma, si un sistema informático registra el tiempo como un ser humano, se volverá extremadamente complejo y provocará diversos fallos. Por lo tanto, también puede comprender que los programadores de UNIX desarrollaron un pequeño programa para evitar problemas... Basado en este programa, el sistema UNIX calculará la zona horaria según la ubicación geográfica de su computadora o teléfono móvil y le indicará la hora correcta.
Específicamente, las 0:00:00 y las 0:00 del 1 de octubre de 1970 UTC 1970 65438+ están configuradas en "hora cero" de la hora UNIX. El significado del conjunto de números anterior: ¿Cuántos segundos han pasado desde las 0:00:00 del 1 de octubre de 1970?
Este sistema todavía se utiliza en la actualidad.
Comprende el tiempo UNIX, lo entenderás si continúas.
Binario, sistema de bits, desbordamiento de enteros y desbordamiento de enteros.
Estas cuatro palabras parecen súper complicadas… pero no te preocupes, puedes entenderlas paso a paso.
Las computadoras, incluidas las PC y los teléfonos móviles, usan binario (0 y 1) para representar todo, porque esto significa calcular los dos estados de cada transistor en el chip: apagado y encendido. Todos los dispositivos iOS sintonizados a 1970 son de 64 bits. Esto significa que el dispositivo puede almacenar y procesar hasta 64 bits binarios, que son 64 ceros o 65438+ ceros.
Por ejemplo, cuando estaba escribiendo esta sección de este artículo, verifiqué la hora actual:
Distrito de Dongba, 17 de febrero de 2016, 12:04:51 p.m.
Luego convertí este tiempo al convertidor de tiempo UNIX y obtuve:
1455681891
Luego lo convertí de decimal a binario y obtuve:
01010110110000111111000101100011 ,
p>Puedes ver que este número binario tiene 32 bits: 32 0 o 1. Esto se debe a que, antes de las 3 a. m. del 65438 de junio + 19 de octubre de 2038, nuestra hora puede representarse mediante el sistema de hora UNIX de 32 bits en la computadora, es decir, 32 0 o 1.
Demasiados dígitos puede parecer un poco complicado y difícil de observar. Busquemos un sistema de 2 dígitos para explicar. El signo igual va precedido de dos dígitos y seguido de diez dígitos:
00 = 0
01 = 1
10 = 2
11 = 3
Esto significa que el número entero más alto que un sistema de 2 bits puede contar es 3, lo que se conoce en informática como "ancho de registro binario".
Encontré otro sistema de 4 bits:
0000 = 0, 0001 = 1, 0010 = 2, 0011 = 3, 0100 = 4, 0101 = 5….
Por analogía, 1111 = 15.
El entero contable más alto en un sistema de 4 bits, es decir, su ancho de registro binario es 15. (Además, la fórmula para calcular el ancho de un registro binario es 2 elevado a la enésima potencia – 1, donde n es igual al número de bits en el sistema).
Ahora comprendes el sistema de bits de una computadora. ¡sistema! Entonces, ¿qué hacer con el desbordamiento de enteros?
Si intenta contar el decimal "4" en un sistema de 2 bits, encontrará que el sistema cambia de "3" de 11 a 00 de manera similar, si intenta contar el decimal "16"; , encontrará que el sistema vuelve a cambiar a 0000, que es "desbordamiento de enteros".
De manera similar, si intentas contar números negativos en un sistema de 4 dígitos, como -1, el sistema saltará de 0000 a 111, que es "15" en decimal. Esto se debe a que este formato de entero no admite números negativos, que es el "desbordamiento de enteros" que analizamos.
Tom Scott utilizó a Gandhi en la primera generación del juego de ordenador "Civilization" para explicar este error que no es un error: al principio del juego, el valor de ataque del gobernante indio Gandhi era sólo 1 (con precisión reflejando la filosofía de Gandhi de "no violencia" en el mundo real). Sin embargo, si el valor de ataque de Gandhi cae continuamente a 0 durante el juego y luego cae por debajo de 0, entonces el sistema de números enteros se confundirá, lo que provocará que el valor de ataque real de Gandhi se eleve repentinamente al nivel más alto; esto se debe a que en el sistema civilizado El El formato de entero utilizado encontró "desbordamiento de enteros insuficiente"...
¿Por qué no se puede resolver un problema tan estúpido?
De hecho, se ha solucionado...
De hecho, existe una versión del formato de enteros de UNIX que permite que existan números negativos. Sin embargo, Apple no usa esta versión en el sistema de tiempo UNIX de los dispositivos iOS de 64 bits actuales y encontró el error de cambio de ladrillos de 1970...
Simplemente tome cualquier dispositivo inteligente que tenga a mano ( como su iPhone de 64 bits), intente ajustar la hora del sistema al mínimo (realmente no lo ajuste). El límite de tiempo más antiguo que encontrará es principalmente 1970-1. Como se mencionó en el Capítulo 1, este es el punto de partida de UNIX y el momento más temprano en que su iPhone puede mostrarse correctamente.
Error de Sunfreeze
La hora del sistema se ajusta a 1:00 el 65438 de octubre de 65438. Desde la perspectiva de la computadora, esta operación no causará directamente que su iPhone quede bloqueado. Pero una vez que los mensajes de texto, correos electrónicos o elementos de calendario vencidos anteriores se almacenen en su teléfono, esto hará que el sistema finalmente localice una hora anterior a 1970 65438 + 1:00:00 de octubre.
De esta manera, la hora UNIX de su iPhone se convierte en un entero negativo, es decir, se produce un desbordamiento de enteros basado en los 64 ceros del número binario. De 0000000000000000000000000000000000000000000000000000 a 11165438. 38+011111111111111111111111111111111111116543 8+ 11111111.
A continuación, el iPhone encontrará que el mensaje de texto que su esposa le envió hace un segundo ocurrió en tiempo UNIX representado por 64 binario 1. Convertido a tiempo humano, es decir 292277026596 65438 + 4 de febrero 15:30:6.
Tal vez porque el iPhone de Apple nunca fue diseñado para encenderse después de unos 8.000 años, no puede mostrar más de cinco dígitos del año, y mucho menos un año de doce dígitos.
Entonces, tu iPhone se ha convertido en un ladrillo. En otras palabras, tu iPhone está arrodillado ante el universo eterno.
¿Por qué el iPhone se convierte en un ladrillo si se cambia la hora a 1970? Debido a que el iOS de Apple se basa en Unix y la marca de tiempo de Unix es menor que 0, el sistema fallará. Esto lo decide el sistema Unix, no Apple.
¿Por qué se cambia la hora en el iPhone a 1970? Apple respondió oficialmente el 15 de febrero, hora de EE. UU., admitiendo que configurar manualmente la fecha de un dispositivo iOS en 1970 o antes hará que el dispositivo iOS no pueda reiniciarse, y afirmó que pronto se lanzará una actualización del sistema para resolver este problema. Sin embargo, no se reveló si esperar hasta la actualización de iOS 9.3 o lanzar una versión de corrección de errores por adelantado. Apple no explicó la causa de la vulnerabilidad, pero diversos técnicos analizaron que el motivo más lógico está relacionado con la zona horaria. Los dispositivos iOS utilizan binarios para almacenar la hora. El punto de inicio del tiempo es el 1 de octubre de 1970 a las 1:00:00 hora universal, que es la hora UTC. Si la hora del iPhone en Beijing se establece en 1970 1:00 1 de octubre y la hora UTC es 1969 12 31:06, aparecerá una hora negativa, lo que provocará que el dispositivo se bloquee.
Es un error, no esperaba que nadie lo solucionara esta vez. "Se ha solucionado el último ios921".
Por qué el ajuste de hora del iPhone cambia el sistema de ladrillos. Pero el servicio postventa puede solucionarlo ahí. Escuché que se resolverá pronto. Se recomienda no probarlo. Hay una tarifa de servicio por el servicio postventa. No hay ningún problema con el teléfono y no se puede reemplazar.
Porque la hora más temprana admitida por el iPhone es 19700101, que es la hora de EE. UU. Si se ajusta a 197001, existe una diferencia horaria entre China y Estados Unidos, es decir, la hora es anterior a 1970. , por lo que el sistema no puede reconocerlo.
¿Por qué la fecha del iPhone se ajustó a 1970 en octubre y se bloqueó antes de octubre? Porque el diseño de software ahora utiliza algoritmos de 32 bits, y 1970 era un límite de tiempo. Después de este tiempo, la base de datos de tiempo explotará.
¿Qué debo hacer si cambio la hora en iPhone 1970? ¿Por qué debería cambiar la hora en mi iPhone 1970?
Para iPhone, el tiempo es una variable entera y el valor de la variable es el número de segundos desde 1970 65438 + 1 de octubre. Si la hora se establece en 1970 65438 + 1 de octubre, este valor pasará a ser 0. Esto en sí mismo no causará un problema, pero si el teléfono intenta mostrar una hora anterior a este momento, como unas horas antes de este momento, entonces el valor se volverá negativo y provocará que el sistema falle.
Soluciones para reconstruir el iPhone 1970;
1. Para todos los dispositivos iOS con procesador de 64 bits, desmonte la máquina y retire la batería, déjela durante 10 minutos y luego vuelva a instalarla.
Cuando la batería sea suficiente, espera unas horas. Cuando el valor de la marca de tiempo de Unix es mayor o igual a 0, la hora del sistema entra en vigor y puede iniciarse normalmente.
2. Para evitar dispositivos con jailbreak, agregue la fuente de Cydia: repo.ziph0n./ e instale el complemento BrickingDate. Nota: Este complemento solo puede evitar que las personas modifiquen la hora, pero no puede evitar que el código altere maliciosamente la hora.
3. Actualizar a la última versión 9.3 puede resolver este problema. Se ha publicado otra versión 9.3 en el sitio web oficial de Apple.
Soy estúpido y configuré 1970.5438+0.1, y el resultado está aquí.
Este problema no se puede solucionar ni siquiera flasheando el teléfono.
Ahora solo hay dos soluciones:
1. Si deseas servicio postventa: utiliza tu teléfono móvil para gestionar el servicio postventa.
2. Si no tienes miedo de no tener servicio postventa: retira la batería, déjala 10 minutos y luego vuelve a enchufarla.
¿Por qué la hora del teléfono cambia a 1970.1 y luego se bloquea después de reiniciarlo? Este es un error en el sistema iOS de los teléfonos móviles de Apple. Esto se debe a que la hora del sistema iOS de Apple usa la época Unix y la hora universal (UTC) es 1970 65438 + octubre 65438.
Nota: El motivo es que Internet no es oficial de Apple. Apple ha reconocido públicamente que existe la vulnerabilidad, pero no ha revelado la causa.