98 votes

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

Je ne suis pas sûr des langages dans lesquels ces extensions sont écrites, je pense qu'elles sont écrites en Html, Javascript ou JSON. Pour autant que je sache, elles sont "compressées" dans un fichier .CRX.

Est-il possible de modifier directement le html, js, json d'une extension Chrome (ou tout autre langage qu'ils utilisent) ?

0 votes

J'ai perdu beaucoup de temps à essayer de résoudre ce problème 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. Il s'agit d'un utilitaire Mac gratuit basé sur 7-Zip. Il n'est pas nécessaire de renommer le fichier CRX. Ouvrez l'application et déposez-y votre fichier CRX. Elle extraira le contenu dans un dossier. keka.io

106voto

JDavis Points 1366

Les répertoires des extensions Chrome installées sont répertoriés ci-dessous :

  1. Copiez le dossier de l'extension que vous souhaitez modifier. ( Nommé selon l'ID de l'extension, pour trouver l'ID de l'extension, allez sur chrome://extensions/ ). Une fois copié, vous devez supprimer le dossier _metadata.

  2. De chrome://extensions sur Mode développeur sélectionnez Charger l'extension non emballée... et sélectionnez le dossier d'extension que vous avez copié, s'il contient un sous-dossier qui est nommé par la version, sélectionnez ce dossier de version où il y a un fichier manifeste, ce fichier est nécessaire pour Chrome.

  3. Effectuez vos modifications, puis sélectionnez reload et actualisez la page de votre poste pour voir vos modifications.


Répertoires d'extensions pour 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 votes

Pour votre information, au moins sous Windows, la fonction \Default dans le chemin d'accès à l'extension indique le profil pour lequel l'extension est installée. Si vous utilisez plusieurs profils dans Chrome \Default est le profil par défaut et \Profile1 est le 1er profil supplémentaire créé.

2 votes

Consultez cette extension chrome pour accéder rapidement au code source d'une extension : chrome.google.fr/webstore/detail/extension-source-locator/

0 votes

@Shaihi Je suppose que c'est votre extension. Il y a quelques problèmes avec elle - le plus important est qu'elle détourne le nouvel onglet - aussi, elle retourne null pour le nom d'utilisateur, de sorte que le chemin copié ne fonctionne pas - je suis sur OS X - idée cool cependant, il faut juste un peu de travail. Oh et aussi, le slash entre Extensions et l'id de l'extension est manquant.

89voto

sathish Points 2419

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

Le type de fichier de l'extension Google Chrome est CRX. Il s'agit essentiellement d'un format de compression. Donc, si vous voulez voir ce qui se cache derrière une extension, les scripts et le code, il suffit de changer le type de fichier de "CRX" en "ZIP".

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

Vous pouvez ensuite l'emballer avec les outils internes de Chrome qui créent automatiquement le fichier en CRX. Pour l'installer, il suffit d'un clic.

14 votes

Le fichier crx a un en-tête supplémentaire avant le contenu zippé developer.chrome.com/extensions/crx.html

5 votes

Après avoir décompressé le fichier devient quelque chose de .zip.cpgz ?

7 votes

Renommer l'extension de crx à zip et cliquer dessus ne fonctionnera pas. la unzip fonctionnera même sur crx extension.

47voto

sowbug Points 3049

Un fichier CRX signé possède un en-tête qui rendra la plupart des décompresseurs défectueux. Ce n'est pas la façon la plus simple de procéder, mais voici comment le faire depuis 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 en excluant l'en-tête CRX.

  1. hexdump -C the_extension.crx | more
  2. Cherchez dans la sortie le début du fichier zip, qui sont les octets ASCII "PK". Dans l'échantillon que j'ai essayé, le PK était à l'offset 0x132. (En lisant la spécification CRX, je pense que ce nombre varie d'un fichier à l'autre à cause des différentes longueurs de signature). C'est ce nombre 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, substituez le décalage que vous avez trouvé à l'étape précédente).
  4. Décompressez maintenant le fichier .zip que vous venez de créer.
  5. Modifiez les fichiers dans le répertoire décompressé, puis installez l'extension non signée/non empaquetée dans votre installation Chrome, ou bien reconditionnez-la comme vous le feriez pour toute autre extension Chrome.

Je suis sûr qu'il existe un moyen plus concis de le faire. Experts Bash, veuillez améliorer ma réponse.

3 votes

Un bon indice ! Mon décalage PK était également 0x132

24 votes

J'ai réussi à 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 quand même fait.

2 votes

unzip fonctionne parfaitement : warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)

10voto

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

1 votes

Woah ! au moins sur vista vous n'avez même pas à changer l'extension du fichier, 7-zip va juste en ville sur ce mauvais garçon !

0 votes

Non, pas du tout. J'ai renommé le .crx en .zip et 7-ZIP me donne une erreur disant qu'il ne peut pas ouvrir le ZIP.

3voto

Anonymous Points 11

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

Les thèmes, extensions, etc. de Chrome ne sont que des fichiers compressés. Obtenir 7-zip ou WinRar pour le dézipper. 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 manifest, vous pourrez peut-être comprendre à quoi ils servent. Ensuite, vous pouvez tout changer...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X