Ganlv 发表于 2018-3-2 18:27

最新版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>
```

goal1n 发表于 2018-11-6 13:48

70版的,要搜索2B 00 83 F8 02

SSHZDR 发表于 2018-3-3 12:59

我是没折腾出门道,然后果断卸载Chrome65版,安装了61版。
这里有Chrome历史版本的便携版:
https://www.portablesoft.org/google-chrome-legacy-versions/
便携版其实可以和安装版共存,所以,目前是新版的安装版加旧版的便携版,安装不同扩展插件。

Ganlv 发表于 2018-3-2 22:25

linuxprobe 发表于 2018-3-2 21:51
我找你的方法解决,问题还是会出现,并不是永久性的。

是偶尔出现吗?因为我自己这样解决就可以了,原作者还把 ExtensionDeveloperModeWarning 这个字符串的第一个字节直接改成了 00,我不知道这个有没有影响

海盗小K 发表于 2018-3-2 18:34

感谢Ganlv大佬分享心得,嘿嘿

55168791 发表于 2018-3-2 18:46

已转firefox

Ganlv 发表于 2018-3-2 18:50

55168791 发表于 2018-3-2 18:46
已转firefox
是什么使你放弃 Chrome 的?

xyz989 发表于 2018-3-2 18:56

要是不更新 Chrome 也就不用担心不能安装离线插件了吧 !

回忆丶 发表于 2018-3-2 18:59

最近在用感觉还不错的浏览器

badguyzxx 发表于 2018-3-2 19:06

感谢分享,支持一下!

wdy2008088 发表于 2018-3-2 19:09

刊登steam 发表于 2018-3-2 19:39

落落轻风 发表于 2018-3-2 20:07

关键我是小白,就算可以下载工具 也不会用{:1_937:} 要是能一键修改就好了
页: [1] 2 3 4 5 6 7 8
查看完整版本: 最新版Chrome离线安装插件方法(去除插件开发者提示)