Andriod-Resolvió el error de firma que causaba que el wifi no escaneara la ap

Prólogo:
Recientemente, estaba resolviendo un error de wifi. Andriod R, basado en la plataforma Qualcomm, encontró algunos problemas.

Fenómeno problema:

Después de ingresar a la configuración de wifi, encienda el interruptor del botón de wifi y los aps circundantes no se pueden escanear, lo que provoca que no se conecte a wifi.

Solución de problemas simple, resolviendo el proceso

1: Primero, primero verifiqué si se compiló el módulo wifi y, después de confirmar que se compiló ko, lo encontré debajo del dispositivo:

kona:/vendor/lib/modules # ls
audio_mbhc.ko            audio_wcd938x_slave.ko  qca_cld3_qca6390.ko
audio_native.ko          audio_wcd9xxx.ko        qca_cld3_qca6490.ko

Solo enumero algunos archivos ko aquí, lo que necesito es qca_cld3_qca6390.ko , lo que significa que ha sido compilado.
2: Posteriormente, puede ser que ko no se cargue, y yo sí cargué de forma activa aquí: el comando insmod se usa para cargar el módulo.

/vendor/lib/modules # insmod qca_cld3_qca6390.ko                                              
insmod: failed to load qca_cld3_qca6390.ko: Required key not available

Decir que la clave requerida no está disponible o no coincide, implica la firma.
Nota: Si aparece la siguiente información durante la ejecución:

kona:/vendor/lib/modules # insmod qca_cld3_qca6390.ko                                                
insmod: failed to load qca_cld3_qca6390.ko: File exists

Significa que el controlador del módulo se ha cargado, si se ha cargado, pero el ap aún no se ha escaneado, busque otros problemas.
3: resuelve el problema del escaneo wifi

1) Omita la detección de firma wifi y haga que esta función esté disponible temporalmente:
bloquee directamente la detección de firma del módulo:

#CONFIG_MODULE_SIG=y
#CONFIG_MODULE_SIG_FORCE=y

Explique: El
elemento de configuración del kernel
CONFIG_MODULE_SIG = y
indica que el mecanismo de firma está activado, pero en este momento, se puede usar la firma del módulo o unsigned.
CONFIG_MODULE_SIG_FORCE = y
Si los elementos de configuración anteriores están habilitados, el módulo debe tener la firma correcta antes de que pueda usarse normalmente.

Por supuesto, hay otros archivos de configuración con esto:
CONFIG_MODULE_SIG_ALL = y Cuando
se compila el kernel, no firmará activamente el módulo a menos que active los elementos de configuración anteriores.

De todos modos, no hay ningún archivo de configuración para mi hermano, solo lo encontré en Internet.

Después de compilar y verificar en la computadora, el wifi puede escanear a la ap.
Inserte la descripción de la imagen aquí
2) Cambie la firma para que la firma sea consistente y resuelva el problema
. Extraiga el módulo ko en el dispositivo y use el comando para ver:

optiplex-7070:~$ adb pull /vendor/lib/modules/qca_cld3_qca6390.ko  ~/桌面/
/vendor/lib/modules/qca_cld3_qca6390.ko: 1 file pulled. 23.6 MB/s (15031278 bytes in 0.607s)

Primero, echemos un vistazo a la diferencia entre la firma normal y la no firmada:
Inserte la descripción de la imagen aquí
información de la firma de ko: firma del módulo adjunta. Como puede verse en la figura, qca_cld3_qca6390.ko no ve la información de la firma.
Nota: Si ya tiene una firma cuando revisa la firma, está bien, ¡también puede firmarlo nuevamente sobre la base de su firma!
Agregar directamente la firma manual:
dado que ko se ha eliminado, sobre la base de firmas inconsistentes, y al mismo tiempo, para ser coherentes con la firma de kenel, tenemos que usar por separado las herramientas y las claves secretas y los certificados digitales en estos dos rutas en el código. Sáquelo (no es necesario que lo quite, solo estoy aquí para su conveniencia):

/kernel/ship_prebuilt/primary_kernel/scripts下的工具:sign-file
/kernel/ship_prebuilt/primary_kernel/certs下的密钥和数字签名:signing_key.pem与signing_key.x509

Algunos estudiantes tienen que volver a preguntar, la clave y la firma digital en mi código no coinciden con las mías. Puede ser: Vi que Internet usa signing_key.priv y signing_key.x509, por lo que puede cambiar signing_key. Piense en priv como mi signing_key .pem.
Todo está listo, cambie directamente la firma:
primero déjeme ver la firma de ko del tirón:
use el comando:

$:hexdump -C qca_cld3_qca6390.ko |tail

La pantalla es la siguiente:

00e55e40  4d 43 c7 47 39 ba 0a b7  c9 12 b2 d8 cd 3e 45 7c  |MC.G9........>E||
00e55e50  aa 07 c0 c5 09 68 ce 5e  3f b2 c0 83 77 0c 97 2e  |.....h.^?...w...|
00e55e60  6e 99 78 be 45 1b 6f 9a  b4 05 df f4 e5 17 1e 10  |n.x.E.o.........|
00e55e70  5e ed 05 93 46 c1 22 2d  9d 06 fc 22 25 8e c4 20  |^...F."-..."%.. |
00e55e80  87 1f 4b 2d 8b ca 9e 3a  1a 63 1f ab 75 b2 12 2f  |..K-...:.c..u../|
00e55e90  e2 45 53 dc c5 3b 89 81  31 37 eb 9e 9b b5 47 46  |.ES..;..17....GF|
00e55ea0  cb 11 00 00 02 00 00 00  00 00 00 00 02 a9 7e 4d  |..............~M|
00e55eb0  6f 64 75 6c 65 20 73 69  67 6e 61 74 75 72 65 20  |odule signature |
00e55ec0  61 70 70 65 6e 64 65 64  7e 0a                    |appended~.|
00e55eca

Significa que la firma ya está ahí, pero no es correcta, es una firma de otra versión, así que lo volví a firmar:
Usa el comando:

$ ./sign-file sha512 signing_key.pem signing_key.x509 ../qca_cld3_qca6390.ko 

Verifique la firma nuevamente:

$ hexdump -C qca_cld3_qca6390.ko |tail 

contenido:

00e55e30  a6 7c cf 04 d4 0c 34 50  e5 16 2c 23 4b 67 23 0e  |.|....4P..,#Kg#.|
00e55e40  5b e2 d7 a0 ff 03 b0 98  5c 0f c3 6c 5f 64 d7 c1  |[.......\..l_d..|
00e55e50  46 67 b6 11 53 99 01 6a  40 41 33 bb c9 e6 92 a5  |Fg..S..j@A3.....|
00e55e60  de 51 02 ae 63 15 4e a8  48 ea d7 4c 59 b6 e9 63  |.Q..c.N.H..LY..c|
00e55e70  c0 83 b4 6d b3 2f 42 90  d1 26 a9 a4 da ba 9d 8c  |...m./B..&......|
00e55e80  a8 72 94 5f 7d fe 84 3f  3f 3c 08 b2 50 3e 5d bb  |.r._}..??<..P>].|
00e55e90  cb f8 cf a2 d8 09 6f 00  00 02 00 00 00 00 00 00  |......o.........|
00e55ea0  00 02 a9 7e 4d 6f 64 75  6c 65 20 73 69 67 6e 61  |...~Module signa|
00e55eb0  74 75 72 65 20 61 70 70  65 6e 64 65 64 7e 0a     |ture appended~.|
00e55ebf

Después de firmar, eliminamos el ko debajo del dispositivo. Debido al problema de la firma, el controlador no se puede cargar, por lo que no es necesario desinstalar el controlador.
Después de una serie de adb, después de que se pueda cambiar el contenido del dispositivo, presionamos nuestro ko cambiado:

$ adb push qca_cld3_qca6390.ko /vendor/lib/modules
qca_cld3_qca6390.ko: 1 file pushed. 26.2 MB/s (15031999 bytes in 0.547s)

Ingrese al dispositivo, verifique si presionamos, si está bien, podemos cargar activamente el controlador:

kona:/vendor/lib/modules # insmod qca_cld3_qca6390.ko 

No hay error, ok, enciende el wifi nuevamente, el wifi escanea a la ap, el problema está resuelto.
Inserte la descripción de la imagen aquí

Breve resumen : Si solo cepilla boot.img, use la herramienta de su código para firmar, es decir, debajo del kernel. Este es el núcleo. No importa quién compiló el ko, pero su ko debe coincidir con su boot.img .

Descripción de la situación de error: (los pozos por los que caminó, no los imite)

Debido a que no tengo muy claro el marco del código, me parece que soy muy mecánico con respecto al tema de las firmas. Al principio usé (tenga en cuenta que es el directorio de salida):

  • Firma digital y clave: signing_key.pem y signing_key.x509 en /out/target/product/kona/obj/kernel/msm-4.19/certs$
/out/target/product/kona/obj/kernel/msm-4.19/certs$ ls 
built-in.a       signing_key.pem        system_keyring.o
modules.builtin  signing_key.x509       x509_certificate_list
modules.order    system_certificates.o  x509.genkey
  • Herramienta de firma utilizada: sign-file en /out/target/product/kona/obj/kernel/msm-4.19/scripts$
 /out/target/product/kona/obj/kernel/msm-4.19/scripts$ ls 
asn1_compiler  conmakehash   genksyms  mod            recordmcount  sortextable
basic          dtc           kallsyms  modules.order  selinux       unifdef
bin2c          extract-cert  kconfig   pnmtologo      sign-file

Después de muchos intentos, falló y la máquina se bloqueó directamente. ¡A primera vista, la firma es incorrecta! Busqué las herramientas anteriores y las claves secretas a nivel mundial y encontré un archivo similar debajo del kernel, que es la solución al problema anterior.

Sin cargar el controlador, la realidad de la capa de la aplicación:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42271802/article/details/113526375
Recomendado
Clasificación