2010-12-01 8 views
33

Necesito ver quién firmó la aplicación que he instalado en mi dispositivo. ¿Esto generalmente es posible hacerlo en el dispositivo o en la PC?¿Cómo ver la identidad de la persona que firmó la aplicación en el dispositivo Android?

+0

Bueno, no toda aplicación tiene Acerca de la página, a la derecha? Además, como desarrollador de la aplicación, puedo escribir cualquier cosa en la página Acerca de, que puede no coincidir con la información del certificado que usé para firmar la aplicación ... –

+0

En Android, puedes usar PackageManager para enumerar todas las aplicaciones y obtener el X509 certificado de firma, vea [link] http://stackoverflow.com/a/16305427/2225646. También hay una aplicación gratuita en Google Play: firma Indenile. – Yojimbo

Respuesta

54

(suponiendo que puede obtener acceso al archivo apk en bruto, que generalmente puede, si conoce o adivina su nombre y ubicación, aunque no pueda enumerar el contenido de/data en teléfono -rooted)

Se podía abrir el apk como un archivo zip y filtrar el texto ASCII del contenido binario de META-INF/CERT.RSA

O usando una herramienta real,

jarsigner -verify -certs -verbose some_application.apk 

Por supuesto, la única forma de verificar que el firmante es quien dicen ser es obtener otra cosa firmada con la misma clave de esa parte a través de medios directos o verificados y comparar las huellas dactilares de las teclas de firma, así es como el mismo Android verifica que las actualizaciones de la aplicación y el uso compartido de ID de la aplicación provienen de la misma APK existente.

+0

¡Gracias por la pista! ¿Quizás también sepa cómo lograr el mismo objetivo utilizando solo el dispositivo? Mi identidad puede ser importante para los usuarios finales de mi aplicación, pero suelen ser demasiado vagos para realizar manipulaciones en PC .... –

+2

No me sorprendería si jarsigner está implementado en Java, por lo que probablemente podría portarlo a Android. Sin embargo, la primera sugerencia de extraer el texto ascii filtrando los elementos no imprimibles puede ser más simple. Pero si esta es su aplicación, ¿cuál es el punto? Si el usuario confía en su código para extraer la información del firmante, es de suponer que confiarán también en su pantalla. También tenga en cuenta que extraer la información del firmante no prueba que esta entidad realmente lo haya firmado, tendría que probar que el certificado utilizado era realmente suyo. –

+0

Ejecutando jarsigner en un apk lanzado por Google (al parecer) da (muchos de) estos mensajes: 'X.509, CN = Android, OU = Android, O = Google Inc., L = Mountain View, ST = California, C = US [el certificado es válido del 22-08-08 01:13 al 08-01-36 00:13] [CertPath no validado: la ruta no se encadena con ninguno de los anclajes de confianza] '. ¿Cómo puedo obtener el certificado de Google para validar que realmente fueron los firmantes? (Creo que es relevante agregar a esta respuesta, pero avíseme si desea que publique una pregunta por separado). – mgd

Cuestiones relacionadas