Як я можу безпосередньо змінити розширений файл 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 має додатковий заголовок перед
архівуванням

5
Після розпакування файл стає щось.zip.cpgz?
f01,

7
Перейменування розширення з crxна zipта натискання на нього не працюватиме. unzipкоманда буде працювати навіть на crxрозширення.
iRonin

1
У MacOS CRX неможливо витягти, змінивши тип файлу з "CRX" на "ZIP", тому що коли я намагаюся витягти цей zip-файл, він створить інший файл FileName.zip.cpgz
Ripon Kumar Saha

106

Встановлені каталоги розширень Chrome перелічені нижче:

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

  2. З chrome://extensionsв режимі розробника виберіть Load розпакованого розширення ... і виберіть скопійоване папку розширення, якщо він містить вкладене це з ім'ям версії, виберіть цю версію папки , в якій є файл маніфест, цей файл необхідний для Chrome.

  3. Внесіть зміни, а потім виберіть перезавантажити та оновіть сторінку для розширення, щоб побачити зміни.


Каталоги розширень Chrome

Мак:

/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 Я здогадуюсь, що це ваше розширення. З цим є кілька проблем - головне, щоб він захопив нову вкладку - також він повертає nullім'я користувача, щоб скопійований шлях не працював - я перебуваю в ОС X X - хоч крута ідея, хоча просто потрібно трохи робота. Так, також пропущено косу рису між розширеннями та ідентифікатором розширення.
JDavis

@JDavis - дякую за вклад! Це моє ... Виправлена ​​коса риса - ще не перевірена Mac: s Що стосується викрадення нової вкладки - я думав, що це вбереже кілька кліків, але як тільки я отримаю деякий внесок, я подумаю про її зміну.
Шайхі

1
Де ми копіюємо розширення папки для ? Я скопіював його в інше місце, і коли я спробував "Завантажити розпаковані розширення ...", я отримав "Помилка завантаження розширення" ... "Файл маніфесту відсутній або не читається".
jbyrd

45

Підписаний файл CRX має заголовок, який призведе до того, що більшість / всі розпаковувачі перетворюються на барф. Це не найпростіший спосіб зробити це, але ось як це зробити з командного рядка bash.

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

  1. hexdump -C the_extension.crx | more
  2. Подивіться у висновку для початку zip-файлу, який є байтами ASCII "PK". У зразку, який я намагався, ПК зміщено в 0x132. (З прочитання специфікації CRX, я думаю, що ця кількість буде змінюватися в залежності від файлу через різну довжину підпису.) Саме це число ми і використаємо на наступному кроці.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Для параметра пропуску замініть зміщення, знайдене на попередньому кроці.)
  4. Тепер розпакуйте щойно створений файл .zip.
  5. Спілкуйтеся з файлами в розпакованому каталозі, а потім або встановіть розширення без підпису / розпакування у свою інсталяцію Chrome, або перепакуйте його, як і будь-яке інше розширення Chrome.

Я впевнений, що існує більш стислий спосіб зробити це. Експерти Баша, будь ласка, вдосконаліть мою відповідь


3
Чудовий натяк! Мій ПК компенсувався також0x132
Стефан Шмідт

21
Я насправді зміг розпакувати його за допомогою утиліти командного рядка unzip. Він скаржився на додаткові 306 байт заголовка, але все-таки це зробив.
Lex R

2
unzipпрацює чудово:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Навін

як ви зрозумієте зсув для 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}}}')
miken32

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/…
jenming

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 і перевірити каталог "Ціль". Звідти перейдіть до одного каталогу вище, і ви зможете побачити User Dataпапку, а потім скористатися згаданими вище відповідями

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.