¿Cómo modifico directamente un archivo de extensión de Google Chrome? (.CRX)

96

No estoy seguro en qué idiomas están esas extensiones, creo que están escritas en Html, Javascript o JSON. Hasta donde yo sé, están "comprimidos" en un archivo .CRX.

¿Es posible modificar directamente el html, js, json de una extensión de Chrome (o cualquier idioma que utilicen)?

alexchenco
fuente
Perdí mucho tiempo tratando de resolver esto y probé muchos de los enfoques enumerados aquí. Si está en una Mac y descomprimir no funciona, descargue y pruebe Keka. Es una utilidad gratuita para Mac basada en 7-Zip. No es necesario cambiar el nombre del archivo CRX. Abra la aplicación y luego suelte su archivo CRX en ella. Extraerá el contenido a una carpeta. keka.io
Trevor

Respuestas:

87

Lo busqué en Google y encontré esto:

El tipo de archivo de extensión de Google Chrome es CRX. Es esencialmente un formato de compresión. Entonces, si desea ver qué hay detrás de una extensión, los scripts y el código, simplemente cambie el tipo de archivo de "CRX" a "ZIP".

Descomprime el archivo y obtendrás toda la información que necesitas. De esta manera, puede ver las tripas, aprender a escribir una extensión usted mismo o modificarla para sus propias necesidades.

Luego, puede empaquetarlo con las herramientas internas de Chrome que crean automáticamente el archivo nuevamente en CRX. Instalarlo solo requiere un clic.

sathish
fuente
14
crx tiene un encabezado adicional antes del contenido comprimido developer.chrome.com/extensions/crx.html
se_pavel
5
Después de descomprimir el archivo se convierte en something.zip.cpgz?
f01
7
Cambiar el nombre de la extensión de crxa zipy hacer clic en ella no funcionará. el unzipcomando funcionará incluso en la crxextensión.
iRonin
1
En MacOS, CRX no se puede extraer cambiando el tipo de archivo de "CRX" a "ZIP" porque cuando intento extraer ese archivo zip, crea otro archivo FileName.zip.cpgz
Ripon Kumar Saha
106

Los directorios de extensión de Chrome instalados se enumeran a continuación:

  1. Copie la carpeta de la extensión que desea modificar. (Nombrado según el ID de la extensión, para encontrar el ID de la extensión, vaya a chrome://extensions/). Una vez copiado, debe eliminar la carpeta _metadata.

  2. De chrome://extensionsen modo de desarrollador seleccione la extensión desempaquetado de carga ... y seleccione la carpeta de extensión copiado, si contiene una subcarpeta esta es nombrado por la versión, seleccione esta carpeta versión que no es un archivo de manifiesto, este archivo es necesario para Chrome.

  3. Realice sus cambios, luego seleccione volver a cargar y actualice la página de su extensión para ver sus cambios.


Directorios de extensiones de Chrome

Mac:

/Users/username/Library/Application Support/Google/Chrome/Default/Extensions

Windows 7:

C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions

Windows XP:

C:\Documents and Settings\YourUserName\Local Settings\Application Data\Google\Chrome\User Data\Default

Ubuntu 14.04:

~/.config/google-chrome/Default/Extensions/
JDavis
fuente
3
Para su información, al menos en Windows, el \Defaultdirectorio en la ruta de ubicación de la extensión apunta al perfil para el que está instalada la extensión. Si utiliza varios perfiles en Chrome, \Defaultes el perfil predeterminado y \Profile1es el primer perfil adicional creado.
HeatfanJohn
2
Consulte esta extensión de Chrome para acceder rápidamente al código fuente de la extensión: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi
@Shaihi Supongo que es tu extensión. Hay algunos problemas con él, el más importante es que secuestra la nueva pestaña, además, devuelve nullel nombre de usuario, por lo que la ruta copiada no funciona. Estoy en OS X, pero una buena idea, solo necesita un poco. trabajo. Ah, y también, falta la barra entre Extensiones y la identificación de la extensión.
JDavis
@JDavis - ¡gracias por la entrada! Es mía ... Se corrigió la barra inclinada - aún no he probado Mac: s En cuanto a secuestrar la nueva pestaña - estaba pensando que me ahorrará algunos clics, pero una vez que obtenga alguna entrada, consideraré cambiarla.
Shaihi
1
¿Dónde se copia la extensión de la carpeta a ? Lo copié en otra ubicación y cuando intenté "Cargar extensiones desempaquetadas ...", obtuve "Error al cargar la extensión" ... "Falta el archivo de manifiesto o es ilegible".
jbyrd
45

Un archivo CRX firmado tiene un encabezado que hará que la mayoría o todos los descomprimidores se deshagan. Esta no es la forma más fácil de hacerlo, pero aquí se explica cómo hacerlo desde una línea de comandos de bash.

La idea básica es encontrar dónde comienza el archivo zip original sin firmar, luego copiar el archivo CRX a un archivo zip pero excluir el encabezado CRX.

  1. hexdump -C the_extension.crx | more
  2. Busque en la salida el inicio del archivo zip, que son los bytes ASCII "PK". En la muestra que probé, el PK estaba en offset 0x132. (Al leer la especificación CRX, creo que este número variará de un archivo a otro debido a las diferentes longitudes de firma). Ese número es lo que usaremos en el siguiente paso.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Para el parámetro de omisión, sustituya el desplazamiento que encontró en el paso anterior).
  4. Ahora descomprima el .zip que acaba de crear.
  5. Juegue con los archivos en el directorio descomprimido, luego instale la extensión sin firmar / descomprimida en su instalación de Chrome, o vuelva a empaquetarla como lo haría con cualquier otra extensión de Chrome.

Estoy seguro de que hay una forma más concisa de hacer esto. Expertos en Bash, mejoren mi respuesta.

chinche
fuente
3
¡Gran pista! Mi compensación de PK también fue0x132
Stefan Schmidt
21
De hecho, pude descomprimirlo con la utilidad de línea de comandos unzip. Se quejó de los 306 bytes adicionales del encabezado, pero lo hizo de todos modos.
Lex R
2
unzipfunciona perfectamente:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin
¿Cómo se calcula el desplazamiento de hexdump? Tengo la siguiente línea que contiene pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi
No sé si califico como "experto en Bash", pero esto funciona para mí:webext="Downloads/Extension_v0.1.crx" dd if="$webext" of="${webext%.crx}.zip" bs=1 skip=$(hexdump "$webext" | awk '/50 4b/{a=$1; for(i=2;i<=NF;i++){if($i=="50" && $(i+1)=="4b"){print "0x"substr(a,0,6)i-2;exit}}}')
miken32
9

Tenga en cuenta que algunos programas zip tienen problemas para descomprimir un CRX como el descrito por sathish; si este es el caso, intente usar 7-Zip - http://www.7-zip.org/

Arne Roomann-Kurrik
fuente
1
¡Woah! al menos en Vista, ni siquiera tienes que cambiar la extensión del archivo, ¡7-zip simplemente va a la ciudad con ese chico malo!
JKirchartz
No, seguro que no. Cambié el nombre de .crx a.zip y 7-ZIP me da un error de que no puede abrir el ZIP.
Jez
2

Leí las otras respuestas y me pareció importante señalar algunas otras cosas:

1.) Para usuarios de Mac: cuando haces clic en "Cargar extensión descomprimida ...", la carpeta Biblioteca está oculta de forma predeterminada y (incluso si la opción Mostrar archivos ocultos está activada en tu Mac) es posible que no aparezca en la ventana del buscador de Chrome. .

2.) La subcarpeta que contiene la extensión es una cadena alfanumérica aleatoria que lleva el nombre de la ID de la extensión, que se puede encontrar en la página de la extensión de Chrome si la marca de desarrollador está configurada como verdadera. (Casilla de verificación de la parte superior derecha en la página de extensiones)

sdailey
fuente
Entonces, ¿cuál es la solución al # 1? Ya estoy mostrando carpetas ocultas, pero como dices, el directorio no es visible cuando intento seleccionar la ubicación del directorio de extensión.
o_O
@o_O - Esto ha tardado mucho en llegar, pero ... aquí tienes: macworld.com/article/2057221/…
jenming
2

(Ya lo dije) Descubrí esto mientras creaba algunos temas de Chrome (que ya no existen ... :-P)

Los temas, extensiones, etc. de Chrome son solo archivos comprimidos. Obtén 7-zip o WinRar para descomprimirlo. Cada extensión / tema tiene un archivo manifest.json. Abra el archivo manifest.json en el bloc de notas. Luego, si conoce la codificación, modifique el código. Habrá algunos otros archivos. Si miras en el archivo de manifiesto, es posible que puedas averiguar para qué sirven. Entonces, puedes cambiar todo ...

Anónimo
fuente
1

Los archivos .CRX son como archivos .ZIP, simplemente cambie la extensión y haga clic derecho> Extraer archivos y listo.

Una vez que haya extraído los archivos -> modifíquelos y agréguelos a zip y cambie la extensión de nuevo a .crx.

Al revés -> Abrir Chrome -> Configuración -> Extensiones -> Habilitar opciones de desarrollador -> Cargar extensión desempaquetada (carpeta de archivos extraídos modificados) y luego haga clic en paquete de extensión.

Fuente

Mrinvicto
fuente
1

Ahora Chrome es multiusuario, por lo que Extensionsdebe estar anidado en el perfil de usuario del sistema operativo y luego en el perfil de usuario de Chrome. Se llamó a mi primer usuario de Chrome Profile 1, mi Extensionsruta fue C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Para encontrar el tuyo Navega a chrome://version/(uso about:por pereza).

Observe el Profile Pathy simplemente adjunte \Extensions\y tendrá el suyo.

Espero que esto actualice más esta información sobre esta pregunta.

tierra
fuente
1

Es posible modificar el código de la extensión .CRX, porque es un archivo .zip simple. Puede descargar la extensión, extraer su código fuente, modificarlo (probarlo y depurarlo como está de su lado) y volver a empaquetarlo en el archivo .CRX.

Busqué en Google esta herramienta para simplemente descargar la extensión .CRX y extraer el código fuente y funcionó para mí: http://crxextractor.com

Todo lo que hace es analizar el formato de archivo .CRX y extraer el .zip real que contiene el código fuente.

Vladimir Ignatyev
fuente
0

Si ha instalado la versión portátil de Chrome o la tiene instalada en un directorio personalizado, las extensiones no estarán disponibles en el directorio al que se hace referencia en las respuestas anteriores.

Intente hacer clic derecho en el acceso directo de Chrome y verifique el directorio "Destino". Desde allí, navegue a un directorio arriba y debería poder ver la User Datacarpeta y luego puede usar las respuestas mencionadas anteriormente

Sathyajith Bhat
fuente