Come faccio a modificare direttamente un file di estensione di Google Chrome? (.CRX)


96

Non sono sicuro in quale lingua siano queste estensioni, penso che siano scritte in Html, Javascript o JSON. Per quanto ne so sono "compressi" in un file .CRX.

È possibile modificare direttamente html, js, json di un'estensione di Chrome (o qualunque lingua utilizzino)?


Ho perso molto tempo cercando di capirlo e ho provato molti degli approcci elencati qui. Se sei su un Mac e la decompressione non funziona, scarica e prova Keka. È un'utilità Mac gratuita basata su 7-Zip. Non è necessario rinominare il file CRX. Apri l'app e rilascia il tuo file CRX su di essa. Estrarrà il contenuto in una cartella. keka.io
Trevor

Risposte:


87

L'ho cercato su Google e ho trovato questo:

Il tipo di file di estensione di Google Chrome è CRX. È essenzialmente un formato di compressione. Quindi, se vuoi vedere cosa c'è dietro un'estensione, gli script e il codice, cambia semplicemente il tipo di file da "CRX" a "ZIP".

Decomprimi il file e otterrai tutte le informazioni di cui hai bisogno. In questo modo puoi vedere il coraggio, imparare a scrivere un'estensione da solo o modificarla per le tue esigenze.

Quindi puoi eseguirne il backup con gli strumenti interni di Chrome che creano automaticamente il file in CRX. L'installazione richiede solo un clic.


14
crx ha un'intestazione aggiuntiva prima del contenuto zippato developer.chrome.com/extensions/crx.html
se_pavel

5
Dopo aver decompresso il file diventa qualcosa.zip.cpgz?
f01

7
Rinominare l'estensione da crxa zipe fare clic su di essa non funzionerà. il unzipcomando funzionerà anche in crxestensione.
iRonin

1
In MacOS, CRX non può essere estratto cambiando il tipo di file da "CRX" a "ZIP" perché quando provo a estrarre quel file zip ne crea un altro FileName.zip.cpgz
Ripon Kumar Saha

106

Le directory delle estensioni di Chrome installate sono elencate di seguito:

  1. Copia la cartella dell'estensione che desideri modificare. (Denominato in base all'ID dell'estensione, per trovare l'ID dell'estensione, vai a chrome://extensions/). Una volta copiato, devi rimuovere la cartella _metadata.

  2. Da chrome://extensionsin modalità sviluppatore seleziona Carica estensione decompressa ... e seleziona la cartella dell'estensione copiata, se contiene una sottocartella questa è denominata dalla versione, seleziona questa cartella della versione dove c'è un file manifest, questo file è necessario per Chrome.

  3. Apporta le modifiche, quindi seleziona ricarica e aggiorna la pagina della tua estensione per visualizzare le modifiche.


Directory delle estensioni di 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/

3
Cordiali saluti, almeno su Windows, la \Defaultdirectory nel percorso della posizione dell'estensione punta al profilo per cui è installata l'estensione. Se utilizzi più profili in Chrome \Defaultè il profilo predefinito ed \Profile1è il primo profilo aggiuntivo creato.
Heatfan John,


@Shaihi immagino che sia la tua estensione. Ci sono alcuni problemi con esso - la cosa più importante è che dirotta la nuova scheda - inoltre, restituisce nullil nome utente quindi il percorso copiato non funziona - Sono su OS X - idea interessante, però, ne basta un po ' lavoro. Inoltre, manca la barra tra le estensioni e l'ID dell'estensione.
JDavis

@JDavis - grazie per l'input! È mio ... Risolto il problema con la barra - non ho ancora testato il Mac: s Per quanto riguarda il dirottamento della nuova scheda - pensavo che salverà alcuni clic, ma una volta che avrò un input, prenderò in considerazione di cambiarlo.
Shaihi

1
Dove copiamo l'estensione della cartella a ? L'ho copiato in un'altra posizione e quando ho provato a "Carica estensioni decompresse ...", ho ricevuto "Errore di caricamento estensione" ... "File manifest mancante o illeggibile".
jbyrd

45

Un file CRX firmato ha un'intestazione che causerà il barf della maggior parte / tutti gli decompressori. Questo non è il modo più semplice per farlo, ma ecco come farlo da una riga di comando bash.

L'idea di base è trovare dove inizia il file zip originale non firmato, quindi copiare il file CRX in un file zip ma escludere l'intestazione CRX.

  1. hexdump -C the_extension.crx | more
  2. Cerca nell'output l'inizio del file zip, che sono i byte ASCII "PK". Nell'esempio che ho provato, il PK era all'offset 0x132. (Dalla lettura delle specifiche CRX, penso che questo numero varierà da file a file a causa delle diverse lunghezze della firma.) Quel numero è ciò che useremo nel passaggio successivo.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Per il parametro skip, sostituisci l'offset che hai trovato nel passaggio precedente.)
  4. Ora decomprimi il file .zip che hai appena creato.
  5. Giocherella con i file nella directory decompressa, quindi installa l'estensione non firmata / decompressa nella tua installazione di Chrome, oppure ricompattala come faresti con qualsiasi altra estensione di Chrome.

Sono sicuro che ci sia un modo più conciso per farlo. Esperti di Bash, per favore migliora la mia risposta.


3
Ottimo suggerimento! Anche il mio offset PK era0x132
Stefan Schmidt

21
Sono stato effettivamente in grado di decomprimerlo con l'utilità della riga di comando unzip. Si è lamentato dei 306 byte aggiuntivi dell'intestazione, ma l'ha fatto lo stesso.
Lex R

2
unzipfunziona perfettamente:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

come si fa a calcolare l'offset per hexdump? Ho la seguente riga che contiene pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Non so se mi qualifico come "esperto di Bash" ma per me funziona: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

Nota che alcuni programmi zip hanno problemi a decomprimere un CRX come sathish descritto - se questo è il caso, prova a usare 7-Zip - http://www.7-zip.org/


1
Woah! almeno su vista non devi nemmeno cambiare l'estensione del file, 7-zip va in città con quel ragazzaccio!
JKirchartz

No, di sicuro no. Ho rinominato .crx in.zip e 7-ZIP mi dà un errore che non può aprire lo ZIP.
Jez

2

Ho letto le altre risposte e ho trovato importante notare alcune altre cose:

1.) Per utenti Mac: quando fai clic su "Carica estensione decompressa ...", la cartella Libreria è nascosta per impostazione predefinita e (anche se l'opzione Mostra file nascosti è attivata sul tuo Mac) potrebbe non essere visualizzata nella finestra di ricerca di Chrome .

2.) La sottocartella contenente l'estensione è una stringa alfanumerica casuale che prende il nome dall'ID dell'estensione, che può essere trovata nella pagina dell'estensione di Chrome se il flag dello sviluppatore è impostato su true. (Casella di controllo in alto a destra nella pagina delle estensioni)


Allora qual è la soluzione al # 1? Sto già mostrando le cartelle nascoste ma, come dici tu, la directory non è visibile quando provi a selezionare la posizione della directory dell'estensione.
o_O

@o_O - È passato molto tempo, ma ... ecco qua: macworld.com/article/2057221/…
jenming

2

(Già detto) L'ho scoperto mentre creavo alcuni temi di Chrome (che ora sono spariti da tempo ... :-P)

I temi, le estensioni e così via di Chrome sono solo file compressi. Ottieni 7-zip o WinRar per decomprimerlo. Ogni estensione / tema ha un file manifest.json. Apri il file manifest.json nel blocco note. Quindi, se conosci la codifica, modifica il codice. Ci saranno altri file. Se guardi nel file manifest potresti essere in grado di capire a cosa servono. Quindi, puoi cambiare tutto ...


1

I file .CRX sono come i file .ZIP, basta cambiare l'estensione e fare clic con il tasto destro> Estrai file e il gioco è fatto.

Una volta estratti i file -> modificali e aggiungili a zip e cambia l'estensione in .crx.

Altrimenti -> Apri Chrome -> Impostazioni -> Estensioni -> Abilita opzioni sviluppatore -> Carica estensione decompressa (cartella dei file estratti modificati) e quindi fai clic sull'estensione del pacchetto.

fonte


1

Ora Chrome è multiutente, quindi Extensionsdovrebbe essere nidificato sotto il profilo utente del sistema operativo, quindi il profilo utente Chrome, è stato chiamato il mio primo utente Chrome Profile 1, il mio Extensionspercorso era C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Per trovare il tuo Naviga verso chrome://version/(lo uso about:per pigrizia).

Nota il Profile Pathe aggiungi \Extensions\e hai il tuo.

Spero che questo aggiorni di più queste informazioni su questa domanda.


1

È possibile modificare il codice dell'estensione .CRX, perché è un semplice archivio .zip. Puoi scaricare l'estensione, estrarne il codice sorgente, modificarlo (testarlo ed eseguirne il debug poiché è dalla tua parte) e reimballarlo nel file .CRX.

Ho cercato su Google questo strumento per scaricare semplicemente l'estensione .CRX ed estrarre il codice sorgente e ha funzionato per me: http://crxextractor.com

Tutto ciò che fa è analizzare il formato del file .CRX ed estrarre .zip effettivo contenente il codice sorgente.


0

Se hai installato la versione portatile di Chrome o l'hai installata in una directory personalizzata, le estensioni non saranno disponibili nella directory a cui si fa riferimento nelle risposte precedenti.

Prova a fare clic con il pulsante destro del mouse sul collegamento di Chrome e controlla la directory "Target". Da lì, vai a una directory sopra e dovresti essere in grado di vedere la User Datacartella e quindi puoi utilizzare le risposte sopra menzionate

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.