Wie ändere ich eine Google Chrome-Erweiterungsdatei direkt? (.CRX)


96

Ich bin mir nicht sicher, in welchen Sprachen diese Erweiterungen sind. Ich denke, sie sind in HTML, Javascript oder JSON geschrieben. Soweit ich weiß, werden sie in einer .CRX-Datei "komprimiert".

Ist es möglich, HTML, JS, JSON einer Chrome-Erweiterung (oder die von ihnen verwendete Sprache) direkt zu ändern?


Ich habe viel Zeit damit verschwendet, dies herauszufinden, und ich habe viele der hier aufgeführten Ansätze ausprobiert. Wenn Sie auf einem Mac arbeiten und das Entpacken nicht funktioniert, laden Sie Keka herunter und probieren Sie es aus. Es ist ein kostenloses Mac-Dienstprogramm, das auf 7-Zip basiert. Die CRX-Datei muss nicht umbenannt werden. Öffnen Sie die App und legen Sie Ihre CRX-Datei darauf ab. Der Inhalt wird in einen Ordner extrahiert. keka.io
Trevor

Antworten:


87

Ich habe es in Google gesucht und Folgendes gefunden:

Der Dateityp der Google Chrome-Erweiterung ist CRX. Es ist im Wesentlichen ein Komprimierungsformat. Wenn Sie also sehen möchten, was sich hinter einer Erweiterung, den Skripten und dem Code befindet, ändern Sie einfach den Dateityp von "CRX" in "ZIP".

Entpacken Sie die Datei und Sie erhalten alle Informationen, die Sie benötigen. Auf diese Weise können Sie den Mut erkennen, lernen, wie Sie eine Erweiterung selbst schreiben oder sie an Ihre eigenen Bedürfnisse anpassen.

Anschließend können Sie es mit den internen Tools von Chrome sichern, mit denen die Datei automatisch wieder in CRX erstellt wird. Die Installation erfordert nur einen Klick.


14
CrX-Datei hat einen zusätzlichen Header vor komprimierten Inhalten developer.chrome.com/extensions/crx.html
se_pavel

5
Nach dem Entpacken wird die Datei zu etwas.zip.cpgz?
f01

7
Das Umbenennen der Erweiterung von crxnach zipund das Klicken darauf funktioniert nicht. Der unzipBefehl funktioniert auch bei crxErweiterung.
iRonin

1
Unter MacOS kann CRX nicht extrahiert werden, indem der Dateityp von "CRX" in "ZIP" geändert wird, da beim Versuch, diese Zip-Datei zu extrahieren, eine weitere Datei "FileName.zip.cpgz" erstellt wird
Ripon Kumar Saha

106

Installierte Chrome-Erweiterungsverzeichnisse sind unten aufgeführt:

  1. Kopieren Sie den Ordner der Erweiterung, die Sie ändern möchten. (Benannt nach der Nebenstellen-ID, um die ID der Nebenstelle zu finden, gehen Sie zu chrome://extensions/). Nach dem Kopieren müssen Sie den Ordner _metadata entfernen.

  2. Wählen Sie chrome://extensionsim Entwicklermodus die Option Entpackte Erweiterung laden ... und wählen Sie Ihren kopierten Erweiterungsordner aus. Wenn dieser einen von der Version benannten Unterordner enthält, wählen Sie diesen Versionsordner aus, in dem sich eine Manifestdatei befindet. Diese Datei ist für Chrome erforderlich.

  3. Nehmen Sie Ihre Änderungen vor, wählen Sie dann "Neu laden" und aktualisieren Sie die Seite für Ihre Erweiterung, um Ihre Änderungen anzuzeigen.


Chrome-Erweiterungsverzeichnisse

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
Zu Ihrer Information, zumindest unter Windows, zeigt das \DefaultVerzeichnis im Pfad des Erweiterungsspeicherorts auf das Profil, für das die Erweiterung installiert ist. Wenn Sie in Chrome mehrere Profile verwenden, \Defaultist dies das Standardprofil und \Profile1das erste zusätzliche Profil, das erstellt wird.
HeatfanJohn

2
Schauen Sie sich diese Chrome-Erweiterung an, um schnell auf den Quellcode der Erweiterung zuzugreifen: chrome.google.com/webstore/detail/extension-source-locator/…
Shaihi

@Shaihi Ich vermute, dass es Ihre Erweiterung ist. Es gibt ein paar Probleme damit - am wichtigsten ist, dass es die neue Registerkarte entführt - außerdem wird nullder Benutzername zurückgegeben, sodass der kopierte Pfad nicht funktioniert - ich bin unter OS X - coole Idee, es braucht nur ein wenig Arbeit. Außerdem fehlt der Schrägstrich zwischen den Erweiterungen und der Erweiterungs-ID.
JDavis

@ JDavis - danke für die Eingabe! Es ist meins ... Der Schrägstrich wurde behoben - Mac wurde noch nicht getestet: s Was die Entführung des neuen Tabs betrifft - ich dachte, es würde einige Klicks sparen, aber sobald ich eine Eingabe bekomme, werde ich überlegen, ihn zu ändern.
Shaihi

1
Wo kopieren wir den Erweiterungsordner zu ? Ich habe es an einen anderen Speicherort kopiert und als ich versuchte, "entpackte Erweiterungen zu laden ...", bekam ich "Fehler beim Laden der Erweiterung" ... "Manifestdatei fehlt oder ist nicht lesbar".
11.

45

Eine signierte CRX-Datei hat einen Header, der dazu führt, dass die meisten / alle Entpacker gesperrt werden. Dies ist nicht der einfachste Weg, aber hier erfahren Sie, wie Sie dies über eine Bash-Befehlszeile tun.

Die Grundidee besteht darin, herauszufinden, wo die ursprüngliche nicht signierte Zip-Datei beginnt, und dann die CRX-Datei in eine Zip-Datei zu kopieren, aber den CRX-Header auszuschließen.

  1. hexdump -C the_extension.crx | more
  2. Suchen Sie in der Ausgabe nach dem Start der Zip-Datei, bei der es sich um die ASCII-Bytes "PK" handelt. In dem Beispiel, das ich ausprobiert habe, war die PK auf Offset 0x132 eingestellt. (Nach dem Lesen der CRX-Spezifikation wird diese Nummer aufgrund unterschiedlicher Signaturlängen von Datei zu Datei variieren.) Diese Nummer werden wir im nächsten Schritt verwenden.
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132 (Ersetzen Sie für den Parameter überspringen den Versatz, den Sie im vorherigen Schritt gefunden haben.)
  4. Entpacken Sie nun die soeben erstellte ZIP-Datei.
  5. Spielen Sie mit den Dateien im entpackten Verzeichnis und installieren Sie dann entweder die nicht signierte / entpackte Erweiterung in Ihrer Chrome-Installation oder packen Sie sie wie jede andere Chrome-Erweiterung neu.

Ich bin sicher, dass es einen prägnanteren Weg gibt, dies zu tun. Bash-Experten, bitte verbessern Sie meine Antwort.


3
Toller Hinweis! Mein PK Offset war auch0x132
Stefan Schmidt

21
Ich konnte es tatsächlich mit dem Befehlszeilenprogramm entpacken unzip. Es beschwerte sich über die zusätzlichen 306 Bytes des Headers, tat es aber trotzdem.
Lex R

2
unzipfunktioniert perfekt:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

Wie ermitteln Sie den Offset für Hexdump? Ich habe die folgende Zeile, die pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi

Ich weiß nicht, ob ich mich als "Bash-Experte" qualifiziere, aber das funktioniert für mich: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

Beachten Sie, dass einige Zip-Programme Probleme haben, eine CRX wie beschrieben zu entpacken. Wenn dies der Fall ist, versuchen Sie es mit 7-Zip - http://www.7-zip.org/


1
Woah! Zumindest auf Vista müssen Sie nicht einmal die Dateierweiterung ändern, 7-zip geht nur mit diesem bösen Jungen in die Stadt!
JKirchartz

Nein, das tut es sicher nicht. Ich habe .crx in.zip umbenannt und 7-ZIP gibt mir den Fehler, dass die ZIP nicht geöffnet werden kann.
Jez

2

Ich habe die anderen Antworten gelesen und fand es wichtig, ein paar andere Dinge zu beachten:

1.) Für Mac-Benutzer: Wenn Sie auf "Entpackte Erweiterung laden ..." klicken, wird der Bibliotheksordner standardmäßig ausgeblendet und (auch wenn die Option "Versteckte Dateien anzeigen" auf Ihrem Mac aktiviert ist) möglicherweise nicht im Finder-Fenster von Chrome angezeigt .

2.) Der Unterordner, der die Erweiterung enthält, ist eine zufällige alphanumerische Zeichenfolge, die nach der ID der Erweiterung benannt ist. Diese finden Sie auf der Erweiterungsseite von Chrome, wenn das Entwicklerflag auf true gesetzt ist. (Kontrollkästchen oben rechts auf der Erweiterungsseite)


Was ist die Lösung für # 1? Ich zeige bereits versteckte Ordner an, aber wie Sie sagen, ist das Verzeichnis nicht sichtbar, wenn Sie versuchen, den Speicherort des Erweiterungsverzeichnisses auszuwählen.
o_O

@o_O - Das hat lange gedauert, aber ... los geht's: macworld.com/article/2057221/…
jenming

2

(Bereits gesagt) Ich habe dies herausgefunden, als ich einige Chrome-Themes erstellt habe (die längst verschwunden sind ... :-P)

Chrome-Designs, -Erweiterungen usw. sind nur komprimierte Dateien. Holen Sie sich 7-zip oder WinRar , um es zu entpacken. Jede Erweiterung / jedes Thema hat eine manifest.json-Datei. Öffnen Sie die Datei manifest.json im Editor. Wenn Sie die Codierung kennen, ändern Sie den Code. Es wird einige andere Dateien geben. Wenn Sie in die Manifestdatei schauen, können Sie möglicherweise herausfinden, wofür sie bestimmt sind. Dann können Sie alles ändern ...


1

.CRX-Dateien sind wie .ZIP-Dateien. Ändern Sie einfach die Erweiterung und klicken Sie mit der rechten Maustaste auf> Dateien extrahieren. Fertig.

Sobald Sie Dateien extrahiert haben -> ändern Sie sie und fügen Sie sie zu zip hinzu und ändern Sie die Erweiterung wieder in .crx.

Umgekehrt -> Chrome öffnen -> Einstellungen -> Erweiterungen -> Entwickleroptionen aktivieren -> Entpackte Erweiterung laden (geänderter Ordner für extrahierte Dateien) und dann auf Pack-Erweiterung klicken.

Quelle


1

Jetzt ist Chrome ein Mehrbenutzer, Extensionssollte also unter dem Benutzerprofil des Betriebssystems und dann unter dem Chrome-Benutzerprofil verschachtelt sein. Mein erster Chrome-Benutzer wurde aufgerufen Profile 1, mein ExtensionsPfad war C:\Users\ username \AppData\Local\Google\Chrome\User Data\ Profile 1 \Extensions\.

Um deine zu finden Navigiere zu chrome://version/(ich benutze about:aus Faulheit).

Beachten Sie die Profile Pathund nur anhängen \Extensions\und Sie haben Ihre.

Hoffe das bringt diese Infos zu dieser Frage mehr auf den neuesten Stand.


1

Es ist möglich, den Code der .CRX-Erweiterung zu ändern, da es sich um ein einfaches .zip-Archiv handelt. Sie können die Erweiterung herunterladen, den Quellcode extrahieren, ändern (testen und debuggen, sobald er auf Ihrer Seite ist) und wieder in die CRX-Datei packen.

Ich habe dieses Tool gegoogelt, um einfach die Erweiterung .CRX herunterzuladen und den Quellcode zu extrahieren, und es hat bei mir funktioniert: http://crxextractor.com

Alles, was es tut, ist das Analysieren des CRX-Dateiformats und das Extrahieren der tatsächlichen ZIP-Datei, die den Quellcode enthält.


0

Wenn Sie die tragbare Version von Chrome installiert oder in einem benutzerdefinierten Verzeichnis installiert haben, sind die Erweiterungen nicht in dem Verzeichnis verfügbar, auf das in den obigen Antworten verwiesen wird.

Klicken Sie mit der rechten Maustaste auf die Verknüpfung von Chrome und überprüfen Sie das Verzeichnis "Ziel". Navigieren Sie von dort zu einem Verzeichnis oben, und Sie sollten den User DataOrdner sehen und dann die oben genannten Antworten verwenden können

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.