Comment modifier directement un fichier d'extension Google Chrome? (.CRX)

96

Je ne sais pas dans quelles langues se trouvent ces extensions, je pense qu'elles sont écrites en Html, Javascript ou JSON. Autant que je sache, ils sont "compressés" dans un fichier .CRX.

Est-il possible de modifier directement les html, js, json d'une extension Chrome (ou quelle que soit la langue utilisée)?

Alexchenco
la source
J'ai perdu beaucoup de temps à essayer de comprendre cela et j'ai essayé plusieurs des approches énumérées ici. Si vous êtes sur un Mac et que la décompression ne fonctionne pas, téléchargez et essayez Keka. C'est un utilitaire Mac gratuit basé sur 7-Zip. Il n'est pas nécessaire de renommer le fichier CRX. Ouvrez l'application, puis déposez votre fichier CRX dessus. Il extraira le contenu dans un dossier. keka.io
Trevor

Réponses:

87

Je l'ai recherché dans Google et j'ai trouvé ceci:

Le type de fichier d'extension Google Chrome est CRX. C'est essentiellement un format de compression. Donc, si vous voulez voir ce qu'il y a derrière une extension, les scripts et le code, changez simplement le type de fichier de «CRX» à «ZIP».

Décompressez le fichier et vous obtiendrez toutes les informations dont vous avez besoin. De cette façon, vous pouvez voir les tripes, apprendre à écrire une extension vous-même ou la modifier pour vos propres besoins.

Ensuite, vous pouvez le sauvegarder avec les outils internes de Chrome qui créent automatiquement le fichier dans CRX. L'installer ne nécessite qu'un clic.

sathish
la source
14
crx a un en-tête supplémentaire avant le contenu
compressé
5
Après la décompression, le fichier devient quelque chose.zip.cpgz?
f01
7
Renommer l'extension de crxà zipet cliquer dessus ne fonctionnera pas. la unzipcommande fonctionnera même sur l' crxextension.
iRonin
1
Sous MacOS, CRX ne peut pas être extrait en changeant le type de fichier de «CRX» en «ZIP» car lorsque j'essaie d'extraire ce fichier zip, il crée un autre fichier FileName.zip.cpgz
Ripon Kumar Saha
106

Les répertoires d'extensions Chrome installés sont répertoriés ci-dessous:

  1. Copiez le dossier de l'extension que vous souhaitez modifier. (Nommé en fonction de l'ID d'extension, pour trouver l'ID de l'extension, accédez à chrome://extensions/). Une fois copié, vous devez supprimer le dossier _metadata.

  2. A partir de chrome://extensionsen mode développeur , sélectionnez Charger l' extension non empaquetée ... et sélectionnez votre dossier d'extension copié, si elle contient un sous ce nom est par la version, sélectionnez ce dossier version où il y a un fichier manifeste, ce fichier est nécessaire pour Chrome.

  3. Apportez vos modifications, puis sélectionnez recharger et actualisez la page de votre extension pour voir vos modifications.


Répertoires d'extension 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
la source
3
Pour info, au moins sous Windows, le \Defaultrépertoire dans le chemin de l'emplacement de l'extension pointe vers le profil pour lequel l'extension est installée. Si vous utilisez plusieurs profils dans Chrome, \Defaultle profil par défaut \Profile1est le premier profil supplémentaire créé.
HeatfanJohn
2
Découvrez cette extension Chrome pour accéder rapidement au code source de l'extension: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi
@Shaihi Je suppose que c'est votre extension. Il y a quelques problèmes avec lui - le plus important est qu'il détourne le nouvel onglet - aussi, il retourne nullpour le nom d'utilisateur donc le chemin copié ne fonctionne pas - je suis sous OS X - bonne idée cependant, il faut juste un peu travail. Oh et aussi, la barre oblique entre les extensions et l'ID d'extension est manquante.
JDavis
@JDavis - merci pour votre contribution! C'est à moi ... Correction de la barre oblique - je n'ai pas encore testé Mac: s En ce qui concerne le détournement du nouvel onglet - je pensais que cela sauverait quelques clics, mais une fois que j'aurai des informations, j'envisagerai de le changer.
Shaihi
1
Où pouvons-nous copions l'extension dossier à ? Je l'ai copié dans un autre emplacement et quand j'ai essayé de "Charger les extensions décompressées ...", j'ai obtenu "Erreur de chargement de l'extension" ... "Le fichier manifeste est manquant ou illisible".
jbyrd
45

Un fichier CRX signé a un en-tête qui entraînera la plupart / tous les décompresseurs à barf. Ce n'est pas la manière la plus simple de s'y prendre, mais voici comment le faire à partir d'une ligne de commande bash.

L'idée de base est de trouver où commence le fichier zip original non signé, puis de copier le fichier CRX dans un fichier zip mais d'exclure l'en-tête CRX.

  1. hexdump -C the_extension.crx | more
  2. Recherchez dans la sortie le début du fichier zip, qui sont les octets ASCII "PK". Dans l'exemple que j'ai essayé, le PK était à l'offset 0x132. (D'après la lecture de la spécification CRX, je pense que ce nombre variera d'un fichier à l'autre en raison des différentes longueurs de signature.) Ce nombre est ce que nous utiliserons à l'étape suivante.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Pour le paramètre de saut, remplacez le décalage que vous avez trouvé à l'étape précédente.)
  4. Décompressez maintenant le .zip que vous venez de créer.
  5. Jouez avec les fichiers dans le répertoire décompressé, puis installez l'extension non signée / décompressée dans votre installation Chrome, ou reconditionnez-la comme vous le feriez pour toute autre extension Chrome.

Je suis sûr qu'il existe une manière plus concise de procéder. Experts Bash, veuillez améliorer ma réponse.

truie
la source
3
Bon indice! Mon décalage PK était également0x132
Stefan Schmidt
21
J'ai pu le décompresser avec l'utilitaire de ligne de commande unzip. Il s'est plaint des 306 octets supplémentaires de l'en-tête, mais l'a fait quand même.
Lex R
2
unzipfonctionne parfaitement:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin
comment déterminez-vous le décalage pour hexdump? J'ai la ligne suivante qui contient pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi
Je ne sais pas si je suis qualifié d '"expert Bash" mais cela fonctionne pour moi: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

Notez que certains programmes zip ont du mal à décompresser un CRX comme sathish décrit - si tel est le cas, essayez d'utiliser 7-Zip - http://www.7-zip.org/

Arne Roomann-Kurrik
la source
1
Woah! au moins sur Vista, vous n'avez même pas besoin de changer l'extension de fichier, 7-zip va juste en ville sur ce mauvais garçon!
JKirchartz
Non, ce n'est certainement pas le cas. J'ai renommé .crx en.zip et 7-ZIP me donne une erreur indiquant qu'il ne peut pas ouvrir le ZIP.
Jez
2

J'ai lu les autres réponses et j'ai trouvé important de noter quelques autres choses:

1.) Pour les utilisateurs de Mac: lorsque vous cliquez sur "Charger l'extension décompressée ...", le dossier Bibliothèque est masqué par défaut et (même si l'option Afficher les fichiers cachés est activée sur votre Mac), il peut ne pas apparaître dans la fenêtre de recherche de Chrome .

2.) Le sous-dossier contenant l'extension est une chaîne alphanumérique aléatoire nommée d'après l'ID de l'extension, qui peut être trouvée sur la page d'extension de Chrome si l'indicateur de développeur est défini sur true. (Case à cocher en haut à droite sur la page des extensions)

sdailey
la source
Alors, quelle est la solution au n ° 1? J'affiche déjà des dossiers cachés mais comme vous le dites, le répertoire n'est pas visible lorsque vous essayez de sélectionner l'emplacement du répertoire d'extension.
o_O
@o_O - Cela a été long à venir, mais ... c'est parti
jenming
2

(Déjà dit) J'ai découvert cela en créant des thèmes Chrome (qui ont disparu depuis longtemps ... :-P)

Les thèmes, extensions, etc. Chrome ne sont que des fichiers compressés. Obtenez 7-zip ou WinRar pour le décompresser. Chaque extension / thème a un fichier manifest.json. Ouvrez le fichier manifest.json dans le bloc-notes. Ensuite, si vous connaissez le codage, modifiez le code. Il y aura d'autres fichiers. Si vous regardez dans le fichier manifeste, vous pourrez peut-être comprendre à quoi servent. Ensuite, vous pouvez tout changer ...

Anonyme
la source
1

Les fichiers .CRX sont comme des fichiers .ZIP, il suffit de changer l'extension et de faire un clic droit> Extraire les fichiers et vous avez terminé.

Une fois que vous avez extrait les fichiers -> modifiez-les et ajoutez-les au zip et changez l'extension en .crx.

Autre moyen -> Ouvrir Chrome -> Paramètres -> Extensions -> Activer les options du développeur -> Charger l'extension décompressée (dossier des fichiers extraits modifiés), puis cliquez sur l'extension du pack.

La source

Mrinvicto
la source
1

Maintenant, Chrome est multi-utilisateur et Extensionsdevrait donc être imbriqué sous le profil utilisateur du système d'exploitation, puis le profil utilisateur Chrome, mon premier utilisateur Chrome a été appelé Profile 1, mon Extensionschemin était C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Pour trouver le vôtre Accédez à chrome://version/(j'utilise about:par paresse).

Notez le Profile Pathet ajoutez simplement le \Extensions\vôtre.

J'espère que cela met à jour cette information sur cette question.

osearth
la source
1

Il est possible de modifier le code de l'extension .CRX, car il s'agit d'une simple archive .zip. Vous pouvez télécharger l'extension, extraire son code source, le modifier (le tester et le déboguer car il est de votre côté) et le remettre dans un fichier .CRX.

J'ai cherché cet outil sur Google pour télécharger simplement l'extension .CRX et extraire le code source et cela a fonctionné pour moi: http://crxextractor.com

Tout ce qu'il fait, c'est analyser le format de fichier .CRX et extraire le fichier .zip réel contenant le code source.

Vladimir Ignatyev
la source
0

Si vous avez installé la version portable de Chrome ou si vous l'avez installée dans un répertoire personnalisé, les extensions ne seront pas disponibles dans le répertoire référencé dans les réponses ci-dessus.

Essayez de faire un clic droit sur le raccourci de Chrome et vérifiez le répertoire "Cible". À partir de là, accédez à un répertoire ci-dessus et vous devriez pouvoir voir le User Datadossier, puis utiliser les réponses mentionnées ci-dessus

Sathyajith Bhat
la source