如何直接修改Google Chrome扩展程序文件?(.CRX)


96

我不确定这些扩展名使用哪种语言,我认为这些扩展是用HTML,Javascript或JSON编写的。据我所知,它们是在.CRX文件中“压缩”的。

是否可以直接修改Chrome扩展程序的html,js,json(或它们使用的任何语言)?


我浪费了很多时间试图解决这个问题,并且尝试了这里列出的许多方法。如果您使用的是Mac,则无法解压缩,请下载并尝试使用Keka。它是基于7-Zip的免费Mac实用程序。无需重命名CRX文件。打开应用程序,然后将您的CRX文件拖放到该应用程序上。它将内容提取到文件夹中。keka.io
特雷弗

Answers:


87

我在Google中搜索了它,发现了这一点:

Google Chrome扩展程序文件类型为CRX。它本质上是一种压缩格式。因此,如果您想查看扩展名,脚本和代码背后的内容,只需将文件类型从“ CRX”更改为“ ZIP”即可。

解压缩文件,您将获得所需的所有信息。这样,您就可以看到胆量,学习如何自己编写扩展或根据自己的需要对其进行修改。

然后,您可以使用Chrome的内部工具将其打包,然后自动将文件重新创建回CRX。安装它只需点击一下。


14
crx文件在压缩的内容之前有一个附加的头文件developer.chrome.com/extensions/crx.html
se_pavel 2013年

5
解压缩后的文件变成something.zip.cpgz?
f01年

7
重命名从扩展crxzip并点击它不会起作用。该unzip命令甚至可以在crx扩展名上使用。
iRonin '16

1
在MacOS中,无法通过将文件类型从“ CRX”更改为“ ZIP”来提取CRX,因为当我尝试提取该zip文件时,会生成另一个文件FileName.zip.cpgz
Ripon Kumar Saha

106

下面列出了已安装的Chrome扩展程序目录:

  1. 复制您要修改的扩展名的文件夹。(根据扩展名ID命名,以找到扩展的ID,请转到chrome://extensions/)。复制后,您必须删除_metadata文件夹。

  2. chrome://extensions开发模式选择加载正在开发的扩展...并选择您复制扩展文件夹,如果它包含了这个被命名版本的子文件夹,选择该文件夹版本,其中有一个清单文件,该文件是必要的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
仅供参考,至少在Windows上,\Default扩展位置路径中的目录指向安装扩展的配置文件。如果您在Chrome中使用多个配置文件,\Default则默认配置文件\Profile1是第一个附加配置文件。
HeatfanJohn

2
请查看此chrome扩展程序,以快速访问该扩展程序的源代码:chrome.google.com/webstore/detail/extension-source-locator/…–
Shaihi

@Shaihi我猜这是您的扩展名。它有一些问题-最重要的是,它劫持了新标签-而且,它返回null用户名,所以复制的路径不起作用-我在OS X上-不错的主意,但只需要一点工作。哦,而且,扩展名和扩展名ID之间的斜杠丢失了。
JDavis

@JDavis-感谢您的输入!它是我的...修复了斜杠-尚未测试Mac ::至于劫持新标签-我以为它将保存一些点击,但是一旦获得一些输入,我就会考虑更改它。
Shaihi

1
我们将扩展文件夹复制哪里?我将其复制到另一个位置,当我尝试“加载解压的扩展名...”时,出现“错误加载扩展名” ...“清单文件丢失或不可读”。
jbyrd 2015年

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 (对于skip参数,请替换您在上一步中找到的偏移量。)
  4. 现在解压缩刚刚创建的.zip。
  5. 在解压缩目录中查找文件,然后将未签名/解包的扩展程序安装到您的Chrome安装中,或者像对其他任何Chrome扩展程序一样重新打包。

我敢肯定,有一种更简洁的方法可以做到这一点。Bash专家,请改善我的答案。


3
很好的提示!我的PK抵消值也是0x132
Stefan Schmidt

21
实际上,我可以使用命令行实用程序将其解压缩unzip。它抱怨头的额外306字节,但还是这么做了。
Lex R

2
unzip完美运作:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
Navin

您如何找出十六进制转储的偏移量?我有以下行包含pk00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........|
kchoi '16

我不知道自己是否有资格成为“打击专家”,但这对我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时遇到麻烦,如所描述的那样-如果是这种情况,请尝试使用7-Zip- http: //www.7-zip.org/


1
哇!至少在vista上,您甚至不必更改文件扩展名,而7-zip只是在那个坏男孩身上出现!
JKirchartz

不,肯定不会。我将.crx重命名为.zip,7-ZIP给我一个错误,提示它无法打开ZIP。
耶斯(Jez)

2

我阅读了其他答案,并发现注意其他一些事项很重要:

1.)对于Mac用户:单击“加载解压缩的扩展程序...”时,默认情况下,“库”文件夹处于隐藏状态,并且(即使在Mac上已切换为“显示隐藏的文件”选项)它也可能不会显示在Chrome的查找器窗口中。

2.)包含扩展名的子文件夹是一个以扩展名ID命名的随机字母数字字符串,如果将Developer标志设置为true,则可以在Chrome的扩展名页面上找到该子文件夹。(扩展页面的右上角复选框)


那么#1的解决方案是什么?我已经在显示隐藏文件夹,但是就像您说的那样,在尝试选择扩展目录的位置时该目录不可见。
o_O

@o_O -这已经等了很久了,但是......这里亚去:macworld.com/article/2057221/...
jenming

2

(已经说过)我在制作一些Chrome主题时发现了这一点(现在已经不复存在了... :-P)

Chrome主题,扩展程序等只是压缩文件。获取7-zipWinRar以将其解压缩。每个扩展名/主题都有一个manifest.json文件。在记事本中打开manifest.json文件。然后,如果您知道编码,请修改该编码。还会有其他文件。如果您查看清单文件,则可能可以弄清楚它们的用途。然后,您可以更改所有内容...


1

.CRX文件就像.ZIP文件一样,只需更改扩展名,然后右键单击>提取文件即可。

提取文件后->修改它们并添加到zip,然后将扩展名更改回.crx。

以其他方式->打开Chrome->设置->扩展程序->启用开发人员选项->加载解压的扩展程序(已修改的提取文件文件夹),然后单击打包扩展程序。

资源


1

现在,Chrome是多用户的,因此Extensions应嵌套在OS用户配置文件下,然后将Chrome用户配置文件命名为“我的第一个Chrome用户” Profile 1Extensions路径为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文件夹,然后可以使用上面提到的答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.