Jak bezpośrednio zmodyfikować plik rozszerzenia przeglądarki Google Chrome? (.CRX)


96

Nie jestem pewien, w jakich językach są te rozszerzenia, myślę, że są napisane w HTML, JavaScript lub JSON. O ile wiem, są one „skompresowane” w pliku .CRX.

Czy jest możliwa bezpośrednia modyfikacja html, js, json rozszerzenia Chrome (lub dowolnego używanego języka)?


Zmarnowałem dużo czasu, próbując to rozgryźć i wypróbowałem wiele z wymienionych tutaj podejść. Jeśli używasz komputera Mac i rozpakowywanie nie działa, pobierz i wypróbuj Keka. Jest to darmowe narzędzie Mac oparte na 7-Zip. Nie ma potrzeby zmiany nazwy pliku CRX. Otwórz aplikację, a następnie upuść na nią plik CRX. Wyodrębni zawartość do folderu. keka.io
Trevor

Odpowiedzi:


87

Przeszukałem go w Google i znalazłem to:

Typ pliku rozszerzenia Google Chrome to CRX. Zasadniczo jest to format kompresji. Więc jeśli chcesz zobaczyć, co kryje się za rozszerzeniem, skryptami i kodem, po prostu zmień typ pliku z „CRX” na „ZIP”.

Rozpakuj plik, a uzyskasz wszystkie potrzebne informacje. W ten sposób możesz zobaczyć odwagę, nauczyć się, jak samodzielnie napisać rozszerzenie lub zmodyfikować je na własne potrzeby.

Następnie możesz spakować go z powrotem za pomocą wewnętrznych narzędzi Chrome, które automatycznie tworzą plik z powrotem w CRX. Instalacja wymaga tylko jednego kliknięcia.


14
crx ma dodatkowy nagłówek przed spakowaną zawartością developer.chrome.com/extensions/crx.html
se_pavel

5
Po rozpakowaniu plik staje się coś.zip.cpgz?
f01

7
Zmiana nazwy rozszerzenia z crxna zipi kliknięcie go nie zadziała. unzipkomenda zadziała nawet na crxrozszerzeniu.
iRonin

1
W systemie MacOS CRX nie może zostać wyodrębniony przez zmianę typu pliku z „CRX” na „ZIP”, ponieważ kiedy próbuję rozpakować ten plik zip, tworzy inny plik NazwaPliku.zip.cpgz
Ripon Kumar Saha

106

Poniżej wymieniono katalogi zainstalowanych rozszerzeń Chrome:

  1. Skopiuj folder rozszerzenia, które chcesz zmodyfikować. (Nazwany zgodnie z identyfikatorem rozszerzenia, aby znaleźć identyfikator rozszerzenia, przejdź do chrome://extensions/). Po skopiowaniu musisz usunąć folder _metadata.

  2. Od chrome://extensionsw trybie programisty wybierz Wczytaj rozszerzenie ... i wybierz folder przedłużacza skopiowany, jeśli zawiera podfolder ten jest nazwany przez wersję, wybierz ten folder wersji, gdzie znajduje się plik manifestu, plik ten jest konieczny dla Chrome.

  3. Wprowadź zmiany, a następnie wybierz opcję Wczytaj ponownie i odśwież stronę rozszerzenia, aby zobaczyć zmiany.


Katalogi rozszerzeń Chrome

Prochowiec:

/Users/username/Library/Application Support/Google/Chrome/Default/Extensions

System 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, przynajmniej w systemie Windows, \Defaultkatalog w ścieżce lokalizacji rozszerzenia wskazuje profil, dla którego rozszerzenie jest zainstalowane. Jeśli używasz wielu profili w Chrome, \Defaultjest to profil domyślny i \Profile1pierwszy dodatkowy utworzony profil.
HeatfanJohn

2
Wypróbuj to rozszerzenie do Chrome, aby szybko uzyskać dostęp do kodu źródłowego rozszerzenia: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi,

@Shaihi Zgaduję, że to twoje rozszerzenie. Jest z nim kilka problemów - najważniejsze jest to, że przechwytuje nową kartę - również wraca nullpo nazwę użytkownika, więc skopiowana ścieżka nie działa - jestem na OS X - fajny pomysł, ale potrzebuje tylko trochę praca. Aha, a także brakuje ukośnika między rozszerzeniami a identyfikatorem rozszerzenia.
JDavis,

@JDavis - dzięki za wkład! To jest moje ... Naprawiono ukośnik - jeszcze nie testowałem Maca: s Jeśli chodzi o przechwytywanie nowej karty - myślałem, że zaoszczędzi to trochę kliknięć, ale kiedy dostanę trochę informacji, rozważę zmianę.
Shaihi,

1
Gdzie możemy skopiować rozszerzenie katalogu do ? Skopiowałem go do innej lokalizacji i kiedy próbowałem „Załadować rozpakowane rozszerzenia…”, otrzymałem „Błąd podczas ładowania rozszerzenia”… „Brak pliku manifestu lub nie można go odczytać”.
jbyrd

45

Podpisany plik CRX ma nagłówek, który spowoduje, że większość / wszystkie programy rozpakujące będą barfować. Nie jest to najłatwiejszy sposób, aby to zrobić, ale oto jak to zrobić z wiersza poleceń bash.

Podstawowym pomysłem jest znalezienie miejsca, w którym zaczyna się oryginalny niepodpisany plik zip, a następnie skopiowanie pliku CRX do pliku zip, ale z wyłączeniem nagłówka CRX.

  1. hexdump -C the_extension.crx | more
  2. Poszukaj w danych wyjściowych początku pliku zip, którym są bajty ASCII „PK”. W próbce, którą próbowałem, PK znajdował się na przesunięciu 0x132. (Po przeczytaniu specyfikacji CRX myślę, że ta liczba będzie się różnić w zależności od pliku z powodu różnych długości podpisów.) Tego numeru użyjemy w następnym kroku.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (W przypadku parametru pominięcia zastąp przesunięcie znalezione w poprzednim kroku).
  4. Teraz rozpakuj właśnie utworzony plik .zip.
  5. Baw się plikami w rozpakowanym katalogu, a następnie zainstaluj niepodpisane / rozpakowane rozszerzenie w instalacji Chrome lub przepakuj je tak, jak każde inne rozszerzenie Chrome.

Jestem pewien, że można to zrobić w bardziej zwięzły sposób. Eksperci Bash, proszę poprawić moją odpowiedź.


3
Świetna wskazówka! Mój offset PK również był0x132
Stefan Schmidt

21
Właściwie udało mi się go rozpakować za pomocą narzędzia wiersza poleceń unzip. Narzekał na dodatkowe 306 bajtów nagłówka, ale i tak to zrobił.
Lex R

2
unzipdziała idealnie:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

jak obliczyć przesunięcie dla zrzutu heksowego? Mam następującą linię, która zawiera pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Nie wiem, czy kwalifikuję się jako „ekspert od 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}}}')
basów

9

Zauważ, że niektóre programy zip mają problemy z rozpakowaniem CRX, jak opisano w Sathish - jeśli tak jest, spróbuj użyć 7-Zip - http://www.7-zip.org/


1
Woah! przynajmniej na Vista nie musisz nawet zmieniać rozszerzenia pliku, 7-zip po prostu jedzie do miasta na tym złym chłopcu!
JKirchartz

Nie, na pewno nie. Zmieniłem nazwę .crx na.zip i 7-ZIP wyświetla mi błąd, że nie może otworzyć ZIP.
Jez

2

Przeczytałem inne odpowiedzi i uznałem za ważne, aby zwrócić uwagę na kilka innych rzeczy:

1.) Dla użytkowników komputerów Mac: po kliknięciu „Wczytaj rozpakowane rozszerzenie ...” folder Biblioteki jest domyślnie ukryty i (nawet jeśli opcja Pokaż ukryte pliki jest włączona na komputerze Mac) może nie pojawić się w oknie wyszukiwarki Chrome .

2.) Podfolder zawierający rozszerzenie to losowy ciąg alfanumeryczny nazwany na podstawie identyfikatora rozszerzenia, który można znaleźć na stronie rozszerzenia przeglądarki Chrome, jeśli flaga programisty ma wartość prawda. (Pole wyboru w prawym górnym rogu strony rozszerzeń)


Więc jakie jest rozwiązanie nr 1? Już pokazuję ukryte foldery, ale jak mówisz, katalog nie jest widoczny, gdy próbuję wybrać lokalizację katalogu rozszerzenia.
o_O

@o_O - To było długo czekać, ale ... tutaj ya go: macworld.com/article/2057221/...
jenming

2

(Już powiedziałem) Dowiedziałem się o tym podczas tworzenia niektórych motywów Chrome (które już dawno zniknęły ... :-P)

Motywy, rozszerzenia itp. Chrome to po prostu skompresowane pliki. Pobierz 7-zip lub WinRar, aby go rozpakować. Każde rozszerzenie / motyw ma plik manifest.json. Otwórz plik manifest.json w notatniku. Następnie, jeśli znasz kodowanie, zmodyfikuj kod. Będą inne pliki. Jeśli zajrzysz do pliku manifestu, możesz dowiedzieć się, do czego służą. Wtedy możesz wszystko zmienić ...


1

Pliki .CRX są podobne do plików .ZIP, po prostu zmień rozszerzenie i kliknij prawym przyciskiem myszy> Wyodrębnij pliki i gotowe.

Po rozpakowaniu plików -> zmodyfikuj je i dodaj do pliku zip i zmień rozszerzenie z powrotem na .crx.

W inny sposób -> Otwórz Chrome -> Ustawienia -> Rozszerzenia -> Włącz opcje programisty -> Załaduj rozpakowane rozszerzenie (zmodyfikowany folder wyodrębnionych plików), a następnie kliknij rozszerzenie pakietu.

Źródło


1

Teraz Chrome jest dla wielu użytkowników, więc Extensionspowinien być zagnieżdżony w profilu użytkownika systemu operacyjnego, a następnie w profilu użytkownika Chrome. Został wywołany Profile 1mój pierwszy użytkownik Chrome , moja Extensionsścieżka toC:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\ .

Aby znaleźć swoje, przejdź do chrome://version/(używam about:z lenistwa).

Zwróć uwagę Profile Pathi po prostu dołącz \Extensions\i masz swój.

Mam nadzieję, że dzięki temu informacje na ten temat będą bardziej aktualne.


1

Istnieje możliwość modyfikacji kodu rozszerzenia .CRX, ponieważ jest to proste archiwum .zip. Możesz pobrać rozszerzenie, wyodrębnić jego kod źródłowy, zmodyfikować go (przetestować i debugować tak, jak jest po twojej stronie) i spakować z powrotem do pliku .CRX.

Wygooglowałem to narzędzie, aby po prostu pobrać rozszerzenie .CRX i wyodrębnić kod źródłowy i zadziałało: http://crxextractor.com

Wszystko, co robi, to analizuje format pliku .CRX i wyodrębnia rzeczywisty plik .zip zawierający kod źródłowy.


0

Jeśli zainstalowałeś przenośną wersję Chrome lub masz ją zainstalowaną w katalogu niestandardowym - rozszerzenia nie będą dostępne w katalogu wymienionym w powyższych odpowiedziach.

Spróbuj kliknąć prawym przyciskiem myszy skrót Chrome i sprawdź katalog „Cel”. Stamtąd przejdź do jednego katalogu powyżej i powinieneś być w stanie zobaczyć User Datafolder, a następnie możesz użyć odpowiedzi wymienionych powyżej

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.