Как напрямую изменить файл расширения 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/
JDavis
источник
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. (Флажок вверху справа на странице расширений)

sdailey
источник
Итак, каково решение №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 -> Настройки -> Расширения -> Включить параметры разработчика -> Загрузить распакованное расширение (измененная папка с извлеченными файлами), а затем нажать на расширение пакета.

Источник

Mrinvicto
источник
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папку, а затем сможете использовать ответы, упомянутые выше.

Сатьяджит Бхат
источник