最新版Chrome离线安装插件方法(去除插件开发者提示)
本帖最后由 Ganlv 于 2018-3-18 14:22 编辑## 原文地址
<https://stackoverflow.com/questions/30287907/how-to-get-rid-of-disable-developer-mode-extensions-pop-up/30361260#30361260>
## 问题
最近我更新了 (https://www.chrome64bit.com/),不能再使用离线的 crx 来安装应用了。
安装之后禁止启用
重启浏览器会有提示
谷歌官方给的解释
## 正常解决途径
可以使用 (https://www.google.cn/chrome/browser/canary.html),为开发者准备的版本是可以的,这里就不详细说明了。
## 解决方法
### 开发者模式
直接把 crx 文件用压缩软件打开,解压到一个文件夹中,然后在 <chrome://extensions/> 中勾选 `开发者模式`,使用 `加载已解压的扩展程序...` 选择解压后的文件夹,然后就可以使用了,不过每次打开 Chrome 都会有烦人的提示。
这篇文章讲的是去除这个警告。
> 我不知道作者是如何找到这段代码的,我只是叙述一下原作者给出的修改方法。
> 我在调试破解这方面还是一个新手,希望大家多多支持。
### 工具
我使用的软件是 x64dbg 和 WinHex,这个看个人喜好。
### 打开或附加
使用调试器打开 Chrome,Chrome 位于 `%LOCALAPPDATA%\Google\Chrome\Application\Chrome.exe`,也就是 `C:\Users\用户名\AppData\Local\Google\Chrome\Application\Chrome.exe`。
或者是附加 Chrome 主进程。注意:必须是主进程,在 Chrome 中使用 `Shift` + `ESC` 打开 Chrome 进程管理器,一般第一个就是主进程,记住后面的 PID。
### 找到 chrome.dll
一般程序入口断点和附加断点都不会断在主模块中,在 `符号` 选项卡中找到 `chrome.dll`,双击它,然后会在 `CPU` 选项卡打开该模块。
如果是附加的话就可以直接找到 `chrome.dll` 了,如果直接打开的话 Chrome 还没加载这个 dll 呢,所以我们可以在 `菜单栏 > 选项 > 选项 > 事件` 中打开 `DLL入口` 或 `DLL载入` 断点(二者之中选一个就够了)。然后每次加载 dll,程序都会断下来,我们可以观察 `符号` 选项卡出现没出现 `chrome.dll`,也可以观察下方状态栏提示的断点信息。
### 定位到关键代码
这一步大家都会,`右键 > 搜索 > 当前模块 > 字符串`。
找到 `ExtensionDeveloperModeWarning`,然后转到对应的 `CPU` 页面。
> 虽然有两个位置都出现这个字符串,但是两个位置是挨着的,所以问题不大。
往上翻一点,可以看到一个 `cmp eax,02` 或者 `cmp eax,03`,这个就是关键指令了。
```asm
00007FFA48A5748D | E8 CB E1 17 00 | call chrome.7FFA48BD565D
00007FFA48A57492 | 83 F8 02 | cmp eax,2
00007FFA48A57495 | 0F 8F 46 FF FF FF | jg chrome.7FFA48A573E1
```
### 修改方法
把 `02` 或者 `03` 改成 `09` 就可以了。
## 保存
由于我还不会把修改后的 dll 文件重新保存到文件,这里就用一个最简单、最容易理解的方法。
进入 `%LOCALAPPDATA%\Google\Chrome\Application`,然后打开当前版本的文件夹(比如 `64.0.3282.186`),找到 `chrome.dll`。(也可以通过右键点击 Chrome ,打开文件所在位置定位到文件)
用十六进制编辑器打开 `chrome.dll`。
注意前面的机器指令 `E8 CB E1 17 00` `83 F8 02` `0F 8F 46 FF FF FF`
查找 16 进制 `E8CBE1170083F802`,就查找那几条指令的代码,然后把后面的立即数 `02` 改成 `09`,保存即可。
## 其他
* 本文方法为转载,我并不知道原理是什么,不知道原作者是如何找到这段代码的。
* 我尝试过直接使用 `management.setEnabled` 激活插件,不过这个命令会直接抛出,禁止启用这个插件,怎么把这个检测也绕过,可能需要更多的调试了。
* 细心的人会发现我在文中隐藏的一个小秘密,我发下一篇帖子的时候再说吧(如果能做出来的话)。
* 我还是个新手,希望大家多多交流。
## 附录
### 自动破解脚本
**我自己没测试过,请谨慎使用**
以管理员方式运行
如果出现 PowerShell 版本问题,尝试吧下面这句话的 2 改成 4 试试。(能不能成功我就不知道了)
```batch
powershell -v 2 -ep bypass -noprofile "%temp%\%~n0.ps1" "'%cd% '" "'%~1'"
```
### Hello, world! 插件的代码
只有这两个文件,把这两个文件放到同一个文件夹中就行了,在 Chrome 开发者模式中打开文件夹,就可以加载这个插件了。使用旁边的 `打包扩展程序...` 就可以把这个文件夹变成 crx 文件。
#### manifest.json
```json
{
"manifest_version": 2,
"name": "Hello, world!",
"version": "1.0",
"description": "The first extension that I made.",
"browser_action": {
"default_popup": "popup.html"
}
}
```
#### popup.html
```html
<!DOCTYPE html>
<html>
<head>
<style>
body {
min-width: 200px;
min-height: 50px;
}
</style>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
```
70版的,要搜索2B 00 83 F8 02 我是没折腾出门道,然后果断卸载Chrome65版,安装了61版。
这里有Chrome历史版本的便携版:
https://www.portablesoft.org/google-chrome-legacy-versions/
便携版其实可以和安装版共存,所以,目前是新版的安装版加旧版的便携版,安装不同扩展插件。 linuxprobe 发表于 2018-3-2 21:51
我找你的方法解决,问题还是会出现,并不是永久性的。
是偶尔出现吗?因为我自己这样解决就可以了,原作者还把 ExtensionDeveloperModeWarning 这个字符串的第一个字节直接改成了 00,我不知道这个有没有影响 感谢Ganlv大佬分享心得,嘿嘿 已转firefox 55168791 发表于 2018-3-2 18:46
已转firefox
是什么使你放弃 Chrome 的? 要是不更新 Chrome 也就不用担心不能安装离线插件了吧 ! 最近在用感觉还不错的浏览器 感谢分享,支持一下! 关键我是小白,就算可以下载工具 也不会用{:1_937:} 要是能一键修改就好了