Como posso modificar diretamente um arquivo de extensão do Google Chrome? (.CRX)


96

Não tenho certeza em quais linguagens essas extensões estão, acho que são escritas em Html, Javascript ou JSON. Pelo que eu sei, eles estão "compactados" em um arquivo .CRX.

É possível modificar diretamente o html, js, json de uma extensão do Chrome (ou qualquer linguagem que eles usam)?


Perdi muito tempo tentando descobrir isso e tentei muitas das abordagens listadas aqui. Se você estiver em um Mac e a descompactação não funcionar, baixe e experimente o Keka. É um utilitário gratuito para Mac baseado no 7-Zip. Não há necessidade de renomear o arquivo CRX. Abra o aplicativo e, em seguida, coloque o arquivo CRX nele. Ele irá extrair o conteúdo para uma pasta. keka.io
Trevor

Respostas:


87

Eu pesquisei no Google e encontrei este:

O tipo de arquivo de extensão do Google Chrome é CRX. É essencialmente um formato de compressão. Portanto, se você quiser ver o que está por trás de uma extensão, os scripts e o código, basta alterar o tipo de arquivo de “CRX” para “ZIP”.

Descompacte o arquivo e você obterá todas as informações de que precisa. Dessa forma, você pode ver as entranhas, aprender como escrever uma extensão por conta própria ou modificá-la de acordo com suas necessidades.

Depois, você pode empacotá-lo com as ferramentas internas do Chrome, que criam automaticamente o arquivo de volta no CRX. A instalação requer apenas um clique.


14
O arquivo crx tem um cabeçalho adicional antes do conteúdo compactado developer.chrome.com/extensions/crx.html
se_pavel

5
Depois de descompactar, o arquivo se torna algo.zip.cpgz?
f01

7
Renomear a extensão de crxpara zipe clicar nela não funcionará. o unzipcomando funcionará mesmo na crxextensão.
iRonin de

1
No MacOS, o CRX não pode ser extraído alterando o tipo de arquivo de “CRX” para “ZIP” porque quando tento extrair aquele arquivo zip, ele cria outro arquivo FileName.zip.cpgz
Ripon Kumar Saha

106

Os diretórios de extensões do Chrome instaladas estão listados abaixo:

  1. Copie a pasta da extensão que deseja modificar. (Nomeado de acordo com o ID da extensão; para encontrar o ID da extensão, vá para chrome://extensions/). Uma vez copiado, você deve remover a pasta _metadata.

  2. De chrome://extensionsem modo de desenvolvedor selecione extensão descompactado Carga ... e selecione a pasta de extensão copiado, se ele contém uma subpasta esta é nomeado pela versão, selecione essa pasta versão onde há um arquivo de manifesto, este arquivo é necessário para o Chrome.

  3. Faça suas alterações e selecione recarregar e atualizar a página de sua extensão para ver as alterações.


Diretórios de extensão do 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
Para sua informação, pelo menos no Windows, o \Defaultdiretório no caminho do local da extensão aponta para o perfil para o qual a extensão está instalada. Se você usar vários perfis no Chrome, \Defaulté o perfil padrão e \Profile1é o primeiro perfil adicional criado.
HeatfanJohn

2
Confira esta extensão do Chrome para acessar rapidamente o código-fonte da extensão: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi

@Shaihi Suponho que seja sua extensão. Existem alguns problemas com ele - o mais importante é que ele sequestra a nova guia - também, ele retorna nullpara o nome de usuário para que o caminho copiado não funcione - Estou no OS X - boa ideia, porém, só precisa de um pouco trabalhos. Ah, e também, a barra entre as extensões e o id da extensão está faltando.
JDavis de

@JDavis - obrigado pela contribuição! É meu ... Corrigido a barra - não testei o Mac ainda: s Quanto ao sequestro da nova guia - pensei que isso economizaria alguns cliques, mas assim que obtiver alguma informação considerarei alterá-la.
Shaihi

1
Onde é que vamos copiar a extensão pasta para ? Copiei para outro local e quando tentei "Carregar extensões descompactadas ...", recebi "Erro ao carregar extensão" ... "Arquivo de manifesto ausente ou ilegível".
jbyrd

45

Um arquivo CRX assinado tem um cabeçalho que fará com que a maioria / todos os descompactadores vomitem. Esta não é a maneira mais fácil de fazer isso, mas aqui está como fazê-lo a partir de uma linha de comando do bash.

A ideia básica é descobrir onde o arquivo zip original não assinado começa e, em seguida, copiar o arquivo CRX para um arquivo zip, mas excluir o cabeçalho CRX.

  1. hexdump -C the_extension.crx | more
  2. Procure na saída o início do arquivo zip, que são os bytes ASCII "PK". No exemplo que experimentei, o PK estava no deslocamento 0x132. (Pela leitura das especificações CRX, acho que este número irá variar de arquivo para arquivo devido aos diferentes comprimentos de assinatura.) Esse número é o que usaremos na próxima etapa.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Para o parâmetro de salto, substitua o deslocamento que você encontrou na etapa anterior.)
  4. Agora descompacte o .zip que você acabou de criar.
  5. Brinque com os arquivos no diretório descompactado e instale a extensão não assinada / descompactada na instalação do Chrome ou reempacote-a como faria com qualquer outra extensão do Chrome.

Tenho certeza de que existe uma maneira mais concisa de fazer isso. Especialistas em Bash, por favor, melhorem minha resposta.


3
Ótima dica! Meu deslocamento de PK também foi0x132
Stefan Schmidt

21
Na verdade, consegui descompactá-lo com o utilitário de linha de comando unzip. Reclamou dos 306 bytes adicionais do cabeçalho, mas o fez mesmo assim.
Lex R

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

como você descobre o deslocamento para hexdump? Tenho a seguinte linha que contém pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Não sei se me qualifico como um "especialista em Bash", mas isso funciona para mim: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

Observe que alguns programas zip têm problemas para descompactar um CRX como o sathish descrito - se for esse o caso, tente usar 7-Zip - http://www.7-zip.org/


1
Uau! pelo menos no Vista você nem precisa mudar a extensão do arquivo, 7-zip vai para a cidade com aquele bad boy!
JKirchartz

Não, com certeza não. Eu renomei .crx para.zip e 7-ZIP me dá um erro que não pode abrir o ZIP.
Jez

2

Eu li as outras respostas e achei importante observar algumas outras coisas:

1.) Para usuários de Mac: Quando você clica em "Carregar extensão descompactada ...", a pasta Biblioteca fica oculta por padrão e (mesmo se a opção Mostrar arquivos ocultos estiver ativada em seu Mac) pode não aparecer na janela de localização do Chrome .

2.) A subpasta que contém a extensão é uma string alfanumérica aleatória com o nome do ID da extensão, que pode ser encontrada na página de extensões do Chrome se o sinalizador do desenvolvedor estiver definido como verdadeiro. (Caixa de seleção no canto superior direito na página de extensões)


Então, qual é a solução para o nº 1? Já estou mostrando pastas ocultas, mas como você disse, o diretório não é visível ao tentar selecionar o local do diretório de extensão.
o_O

@o_O - Já demorou muito para chegar, mas ... aqui está: macworld.com/article/2057221/…
jenming

2

(Já disse) Eu descobri isso enquanto fazia alguns temas do Chrome (que já não existem mais ... :-P)

Temas, extensões, etc. do Chrome são apenas arquivos compactados. Obtenha 7-zip ou WinRar para descompactá-lo. Cada extensão / tema possui um arquivo manifest.json. Abra o arquivo manifest.json no bloco de notas. Então, se você conhece a codificação, modifique o código. Haverá alguns outros arquivos. Se você olhar no arquivo de manifesto, poderá descobrir para que eles servem. Então, você pode mudar tudo ...


1

Os arquivos .CRX são como os arquivos .ZIP, basta alterar a extensão e clicar com o botão direito> Extrair arquivos e pronto.

Depois de extrair os arquivos -> modifique-os, adicione ao zip e altere a extensão de volta para .crx.

Outra maneira de contornar -> Abra o Chrome -> Configurações -> Extensões -> Ativar Opções do Desenvolvedor -> Carregar extensão descompactada (pasta de arquivos extraídos modificada) e clique em extensão do pacote.

Fonte


1

Agora o Chrome é multiusuário, então Extensionsdeve estar aninhado no perfil de usuário do sistema operacional e, em seguida, no perfil de usuário do Chrome. Meu primeiro usuário do Chrome foi chamado Profile 1, meu Extensionscaminho foi C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Para encontrar o seu Navegue até chrome://version/(eu uso about:por preguiça).

Observe o Profile Pathe basta anexar \Extensions\e você terá o seu.

Espero que esta informação sobre esta questão seja mais atualizada.


1

É possível modificar o código da extensão .CRX, pois é um arquivo simples .zip. Você pode baixar a extensão, extrair seu código-fonte, modificá-la (testar e depurar como está do seu lado) e empacotar de volta no arquivo .CRX.

Pesquisei essa ferramenta no Google para simplesmente baixar a extensão .CRX e extrair o código-fonte e funcionou para mim: http://crxextractor.com

Tudo o que ele faz é analisar o formato de arquivo .CRX e extrair o .zip real que contém o código-fonte.


0

Se você instalou a versão portátil do Chrome ou a instalou em um diretório personalizado - as extensões não estarão disponíveis no diretório mencionado nas respostas acima.

Tente clicar com o botão direito no atalho do Chrome e verificar o diretório "Destino". De lá, navegue para um diretório acima e você deverá ser capaz de ver a User Datapasta e então usar as respostas mencionadas acima

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.