原文地址
https://stackoverflow.com/questions/30287907/how-to-get-rid-of-disable-developer-mode-extensions-pop-up/30361260#30361260
问题
最近我更新了 Chrome 64,不能再使用离线的 crx 来安装应用了。
安装之后禁止启用
重启浏览器会有提示
谷歌官方给的解释
正常解决途径
可以使用 Google Canary,为开发者准备的版本是可以的,这里就不详细说明了。
解决方法
开发者模式
直接把 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
,这个就是关键指令了。
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
激活插件,不过这个命令会直接抛出,禁止启用这个插件,怎么把这个检测也绕过,可能需要更多的调试了。
-
细心的人会发现我在文中隐藏的一个小秘密,我发下一篇帖子的时候再说吧(如果能做出来的话)。
-
我还是个新手,希望大家多多交流。
附录
自动破解脚本
我自己没测试过,请谨慎使用
以管理员方式运行
DevWarningPatch.zip
(2.87 KB, 下载次数: 44)
如果出现 PowerShell 版本问题,尝试吧下面这句话的 2 改成 4 试试。(能不能成功我就不知道了)
powershell -v 2 -ep bypass -noprofile "%temp%\%~n0.ps1" "'%cd% '" "'%~1'"
Hello, world! 插件的代码
只有这两个文件,把这两个文件放到同一个文件夹中就行了,在 Chrome 开发者模式中打开文件夹,就可以加载这个插件了。使用旁边的 打包扩展程序...
就可以把这个文件夹变成 crx 文件。
manifest.json
{
"manifest_version": 2,
"name": "Hello, world!",
"version": "1.0",
"description": "The first extension that I made.",
"browser_action": {
"default_popup": "popup.html"
}
}
<!DOCTYPE html>
<html>
<head>
<style>
body {
min-width: 200px;
min-height: 50px;
}
</style>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>