Как напрямую изменить файл расширения Google Chrome? (.CRX)


96

Я не уверен, на каких языках эти расширения, я думаю, они написаны на Html, Javascript или JSON. Насколько я знаю, они «сжаты» в файл .CRX.

Можно ли напрямую изменить html, js, json расширения Chrome (или любого другого языка, который они используют)?


Я потратил много времени, пытаясь понять это, и попробовал многие из перечисленных здесь подходов. Если вы используете Mac и разархивирование не работает, скачайте и попробуйте Keka. Это бесплатная утилита для Mac, основанная на 7-Zip. Переименовывать файл CRX не нужно. Откройте приложение и перетащите в него файл CRX. Он извлечет содержимое в папку. keka.io
Тревор

Ответы:


87

Я поискал это в Google и нашел вот что:

Тип файла расширения Google Chrome - CRX. По сути, это формат сжатия. Поэтому, если вы хотите увидеть, что скрывается за расширением, скриптами и кодом, просто измените тип файла с «CRX» на «ZIP».

Разархивируйте файл, и вы получите всю необходимую информацию. Таким образом, вы сможете увидеть внутренности, научиться писать расширение самостоятельно или модифицировать его для своих нужд.

Затем вы можете упаковать его с помощью внутренних инструментов Chrome, которые автоматически создают файл обратно в CRX. Для его установки достаточно щелчка.


14
crx-файл имеет дополнительный заголовок перед заархивированным содержимым developer.chrome.com/extensions/crx.html
se_pavel

5
После распаковки файл становится something.zip.cpgz?
f01

7
Переименовать расширение с crxна zipи щелкнуть по нему не получится. unzipкоманда будет работать даже на crxрасширение.
iRonin

1
В MacOS CRX нельзя извлечь, изменив тип файла с «CRX» на «ZIP», потому что, когда я пытаюсь извлечь этот zip-файл, он
Рипон Кумар Саха

106

Каталоги установленных расширений Chrome перечислены ниже:

  1. Скопируйте папку расширения, которое хотите изменить. (Названный в соответствии с идентификатором расширения, чтобы найти идентификатор расширения, перейдите по ссылке chrome://extensions/). После копирования вам необходимо удалить папку _metadata.

  2. С chrome://extensionsв режиме разработчика выберите Load распакованного расширения ... и выберите скопированную папку расширения, если он содержит вложенное это с именем версии, выберите эту версию папки , в которой есть файл манифест, этот файл необходим для Chrome.

  3. Внесите изменения, затем выберите «Обновить» и обновите страницу своего расширения, чтобы увидеть изменения.


Каталоги расширений 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
FYI, по крайней мере, в Windows \Defaultкаталог в пути к расширению указывает на профиль, для которого установлено расширение. Если вы используете несколько профилей в Chrome, \Defaultэто профиль по умолчанию и \Profile1первый созданный дополнительный профиль.
HeatfanJohn

2
Ознакомьтесь с этим расширением Chrome, чтобы быстро получить доступ к исходному коду расширения: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi

@Shaihi Я предполагаю, что это ваше расширение. С ним есть несколько проблем - наиболее важно то, что он захватывает новую вкладку - кроме того, он возвращает nullимя пользователя, поэтому скопированный путь не работает - я на OS X - крутая идея, просто нужно немного работай. Да и еще, косая черта между расширениями и идентификатором расширения отсутствует.
JDavis

@JDavis - спасибо за вклад! Это мое ... Исправлена ​​косая черта - Mac еще не тестировал: s Что касается взлома новой вкладки - я думал, что это сэкономит некоторые клики, но как только я получу какие-то данные, я подумаю об изменении.
Shaihi

1
Где мы копируем расширение папки для ? Я скопировал его в другое место, и когда я попытался «Загрузить распакованные расширения ...», я получил «Ошибка загрузки расширения» ... «Файл манифеста отсутствует или не читается».
jbyrd

45

Подписанный файл CRX имеет заголовок, который приведет к сбою большинства / всех распаковщиков. Это не самый простой способ сделать это, но вот как это сделать из командной строки bash.

Основная идея состоит в том, чтобы найти, где начинается исходный zip-файл без подписи, затем скопировать CRX-файл в zip-файл, но исключить заголовок CRX.

  1. hexdump -C the_extension.crx | more
  2. Посмотрите в выходных данных начало zip-файла, которое представляет собой байты ASCII «PK». В примере, который я пробовал, PK находился по смещению 0x132. (Читая спецификацию CRX, я думаю, что это число будет варьироваться от файла к файлу из-за разной длины подписи.) Это число мы будем использовать на следующем шаге.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Вместо параметра пропуска замените смещение, найденное на предыдущем шаге.)
  4. Теперь разархивируйте только что созданный .zip.
  5. Поиграйте с файлами в распакованном каталоге, затем либо установите неподписанное / распакованное расширение в вашу установку Chrome, либо переупакуйте его, как и любое другое расширение Chrome.

Я уверен, что есть более лаконичный способ сделать это. Эксперты по Башу, пожалуйста, улучшите мой ответ.


3
Отличная подсказка! Мой зачет PK тоже был0x132
Стефан Шмидт

21
Я действительно смог распаковать его с помощью утилиты командной строки unzip. Он пожаловался на дополнительные 306 байтов заголовка, но все равно сделал это.
Lex R

2
unzipработает отлично:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

как определить смещение для hexdump? У меня есть следующая строка, которая содержит pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Я не знаю, могу ли я квалифицироваться как "эксперт по 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}}}')
Башу

9

Обратите внимание, что у некоторых zip-программ возникают проблемы с распаковкой CRX, как описано в Sathish - если это так, попробуйте использовать 7-Zip - http://www.7-zip.org/


1
Вау! по крайней мере, на Vista вам даже не нужно менять расширение файла, 7-zip просто отправится в город на этом плохом мальчике!
JKirchartz

Нет, конечно, нет. Я переименовал .crx в .zip, и 7-ZIP выдает ошибку, что он не может открыть ZIP.
Jez

2

Я прочитал другие ответы и считаю важным отметить еще несколько вещей:

1.) Для пользователей Mac: когда вы нажимаете «Загрузить распакованное расширение ...», папка библиотеки по умолчанию скрыта и (даже если на вашем Mac включен параметр «Показать скрытые файлы»), она может не отображаться в окне поиска Chrome. .

2.) Подпапка, содержащая расширение, представляет собой случайную буквенно-цифровую строку, названную по идентификатору расширения, которую можно найти на странице расширения Chrome, если для флага разработчика установлено значение true. (Флажок вверху справа на странице расширений)


Итак, каково решение №1? Я уже показываю скрытые папки, но, как вы говорите, каталог не отображается при попытке выбрать расположение каталога расширения.
o_O

@o_O - Это было давно, но ... вот и все: macworld.com/article/2057221/…
Дженминг

2

(Уже сказано) Я обнаружил это при создании некоторых тем Chrome (которые уже давно исчезли ... :-P)

Темы, расширения и т. Д. Chrome - это просто сжатые файлы. Загрузите 7-zip или WinRar, чтобы распаковать его. У каждого расширения / темы есть файл manifest.json. Откройте файл manifest.json в блокноте. Затем, если вы знаете кодировку, измените код. Будут еще какие-то файлы. Если вы посмотрите в файл манифеста, вы сможете понять, для чего нужны файлы. Тогда вы можете все изменить ...


1

Файлы .CRX похожи на файлы .ZIP, просто измените расширение и щелкните правой кнопкой мыши> Извлечь файлы, и все готово.

После того, как вы извлекли файлы -> измените их, добавьте в zip и измените расширение обратно на .crx.

В противном случае -> Открыть Chrome -> Настройки -> Расширения -> Включить параметры разработчика -> Загрузить распакованное расширение (измененная папка с извлеченными файлами), а затем нажать на расширение пакета.

Источник


1

Теперь Chrome является многопользовательским, поэтому он Extensionsдолжен быть вложен в профиль пользователя ОС, а затем в профиль пользователя Chrome. Мой первый пользователь Chrome был вызван Profile 1, мой Extensionsпуть был C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Чтобы найти свой Перейдите в chrome://version/(пользуюсь about:из-за лени).

Обратите внимание на Profile Pathи просто добавьте, \Extensions\и у вас есть свой.

Надеюсь, это обновит эту информацию по этому вопросу.


1

Код расширения .CRX можно изменить, потому что это простой архив .zip. Вы можете загрузить расширение, извлечь его исходный код, изменить его (протестировать и отладить, поскольку оно на вашей стороне) и упаковать обратно в файл .CRX.

Я погуглил этот инструмент, чтобы просто загрузить расширение .CRX и извлечь исходный код, и он сработал для меня: http://crxextractor.com

Все, что он делает, - это разбирает формат файла .CRX и извлекает настоящий .zip, содержащий исходный код.


0

Если вы установили переносную версию Chrome или установили ее в настраиваемый каталог - расширения не будут доступны в каталоге, указанном в ответах выше.

Попробуйте щелкнуть правой кнопкой мыши ярлык Chrome и проверить каталог «Target». Оттуда перейдите в один каталог выше, и вы сможете увидеть User Dataпапку, а затем сможете использовать ответы, упомянутые выше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.