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.