<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chrome &#8211; Berd&#039;s Playground (Deprecated)</title>
	<atom:link href="/tags/chrome/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Won&#039;t receive any further updates.</description>
	<lastBuildDate>Tue, 29 Jun 2021 01:02:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8</generator>

<image>
	<url>/wp-content/uploads/2019/05/icon.png</url>
	<title>Chrome &#8211; Berd&#039;s Playground (Deprecated)</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>在 Microsoft Edge 中安装第三方扩展的正确姿势</title>
		<link>/archives/microsoft-edge-install-third-party-extensions/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Sat, 30 Jan 2021 13:58:50 +0000</pubDate>
				<category><![CDATA[踩坑]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Edge]]></category>
		<guid isPermaLink="false">/?p=893</guid>

					<description><![CDATA[0x00 前言 最近从 Chromium-EyeProtect 迁移到了 Microsoft Edge, 不过我以前一直通过开发者模式加载的一些扩展又使得 Edge 在启动时弹出了 这篇博客 中提到的禁用提示 这个提示在 Chromium 下可以通过安装一个开发者 APP 来解决，但在 Edge 上无法安装这个 APP 此外，如果我尝试打包扩展后直接加载，依然会造成扩展无法启用，这篇博客简单的记录了我解决这个问题的方法 0x01 打包扩展 首先在 edge://extensions/ 页面启用左下角的开发人员模式，随后点击右上角的 打包扩展 按钮打包获得一个 crx 文件 把这个 crx 文件直接拖进扩展页面并安装，找到安装后的扩展，记录下这里的 ID 0x02 获取并安装 ADMX 管理模板 管理模板只需要安装一次，如果你以前安装过可以直接跳过这一步 现在，转到 Microsoft Edge Business 下载页面，选中你当前使用的 Version、Build 后点击 GET POLICY FILES 按钮下载对应的策略包 注意你并不需要在这个页面下载 Edge，只要 Version 和 Build [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>Chrome 恶意拓展 ModHeader 分析笔记</title>
		<link>/archives/chrome-malware-extension-modheader/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Mon, 02 Nov 2020 15:25:40 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Malware]]></category>
		<guid isPermaLink="false">/?p=849</guid>

					<description><![CDATA[0x00 前言 一些废话就不说了, 见 Chrome 恶意拓展 User-Agent Switcher 分析笔记 拓展ID: idgpnmonknjnojddfkpgkljpfnnfcklj 这次也是例行流量审查抓到的，拓展更新时间为 2020/10/31，还好没造成什么大危害 真是万圣节惊喜 0x01 恶意行为 代码提取就不赘述了，参见上一篇分析文章，这里直接分析拓展的恶意行为 首先我观察了一下拓展的行为，禁用拓展并重启 Chrome 后首次启用拓展会观察到网络连接，此时没有打开任何标签页，于是可以判定恶意代码位于背景视图中 一样的从 manifest.json 直接追进 Background Script，搜索恶意域名，发现拓展在一定条件下会尝试连接三个服务器，我们先不管条件来看看连接部分 连上服务器后，拓展发送了一个看似人畜无害的数据请求，只发了一些简单的拓展信息，很像在检查更新 但是我们追到下面的 r.onmessage 中就能看出一些不正常的行为了 首先拓展会从服务器接收指令，然后收到下发的指令后似乎可以发起请求以及停止这些请求，这看起来就已经很吓人了 让我们追进具体的逻辑看一下。在服务端的控制下，拓展可以向指定的 URL 带上指定的 Payload 发送一个 HTTP 请求，然后返回头会被第二个红框的部分进行处理，带上 (可能重定向过的) 最终 URL 信息 随后，Body 数据被传到下一个 Handler 里进行处理，在此处将所有信息发回给服务端 不过还好，由于带上了 mode: "cors"，这整一套逻辑似乎只能进行不带本地凭据的 HTTP 请求，因此暂时没有严重的数据泄露风险 表面上看，这套逻辑带来的危害就是拓展用户会被当成一个代理服务器来利用，可能会给攻击者带来出售代理的收益。怎么说呢，比偷数据好很多吧&#8230; 但还需注意: 这个 mode: "cors" [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>Chrome 恶意拓展 User-Agent Switcher 分析笔记</title>
		<link>/archives/chrome-spyware-extension-user-agent-switcher/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Tue, 27 Oct 2020 10:10:17 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[GoogleSucks]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Reverse]]></category>
		<guid isPermaLink="false">/?p=838</guid>

					<description><![CDATA[0x00 前言 今天在例行审查本机流量的时候发现 Chromium 在启动的时候请求了一个奇怪的域名: www.useragentswitch.com, 我的第一反应是可能拓展在检查更新或者进行用户量统计, 但仔细一想以前是没这种请求的, 就访问一下这个域名 结果发现这是个空页面, 于是又转到 Chrome 应用商店准备看看评论区怎么说 看到这个 404, 这事就麻烦了, 很可能是拓展包含恶意代码被移除了. 下面对拓展代码进行审查. 0x01 文件提取 对于一个被移除的拓展, 一般我们是不能用各种下载器下载到 crx 的. 不过我们可以简单的从本地数据目录里直接提取. 转到 %localappdata%\Chromium\User Data\Default\Extensions 中寻找我们要提取的拓展 ID clddifkhlkcojbojppdojfeeikdkgiae, 再往下一级就是拓展的各种文件了 0x02 代码分析 拿到文件后先把各个 JS 丢去格式化一下, 然后逐个审查. 首先我去对比了一下 bootstrap.min.js 和 jquery.min.js, 看起来里面是没有藏恶意代码的. 接下来就看看 Background Script 在干什么吧. 我知道因为代码不多, 把所有文件分析一遍也是不难的, 但顺着 Manifest 往下找应该是最简便的方法, 拿这个点抬杠大可不必. 从 Manifest [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>为 Chromium 设置 API Key 使用 Google 服务</title>
		<link>/archives/chromium-setup-api-keys/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Tue, 14 Jan 2020 05:35:56 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=421</guid>

					<description><![CDATA[0x00 前言 自编译的 Chromium 通常不会包含 Google API Key, 这就导致我们无法使用一系列的 Google 服务, 如登录和同步等. 该问题实际上很好解决, 只要你有一个 Google 账户就能申请自己的 API Key 并配置到 Chromium 内. 更详细的操作请参考此处, 本文只介绍基础操作. 0x01 申请 API Key 首先你要有一个 Google 账户, 并且你需要加入 chromium-dev 组. 如果你只想用这些 API 而不关心组内消息, 可以按图示配置消息通知. 随后我们直接进入 Google Cloud Platform. 如果是首次访问, 打开后会有一些条款和设置需要同意和配置, 直接按页面提示操作即可. 然后进入项目列表中新建一个项目 接下来按向导操作即可, 非常的简单. 注意项目名称创建好后就不能改变, 建议认真填写. 如果你不是第一次使用 Google Cloud Platform 而且配额满了请自行寻找解决方案. 创建完项目后, [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>解决新版 Chromium 绕过LSP代理软件(如 Proxifier)</title>
		<link>/archives/get-rid-of-chromium-lsp-bypass/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Fri, 04 Oct 2019 12:45:06 +0000</pubDate>
				<category><![CDATA[失效/过期]]></category>
		<category><![CDATA[踩坑]]></category>
		<category><![CDATA[迷の代码]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=355</guid>

					<description><![CDATA[0x00 前言 Proxifier 新版已升级到 WFP 框架进行代理，本文已过期 本文为流水账形式, 查看解决方案请 点这里 时间过的真快呢, 不知不觉高考完的第一个国庆就来了. 有了5天的长假, 我又想起来 Chromium-EyeProtect 更新的事情了(上次更新是四个月前, 看到 README.md 的图了么).不过, 用几天完成更新赶上最新的 v77.0.3865.90 (Stable) 后却出现了我意料之外的情况&#8230; Proxifier 居然不能正常代理 Chromium 的流量了. 具体表现是连 Verbose Log 都无法看到任何关于 chrome.exe 的信息, 就像 Chromium 直接绕过了 LSP 去访问互联网一样&#8230; 排除 Proxifier 的问题后, 我还是不太甘心就这样放弃掉 Proxifier, 于是就有了下面这一堆踩坑和这篇 Blog . 0x01 初步分析 查了部分 LSP 的资料后, 我的第一感觉是 Chromium 在创建 Socket 的时候是不是加了什么大魔法, [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>Chromium-EyeProtect: 珍爱眼睛,远离 Google Design</title>
		<link>/archives/chromium-eyeprotect/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Sat, 04 May 2019 04:38:05 +0000</pubDate>
				<category><![CDATA[踩坑]]></category>
		<category><![CDATA[迷の代码]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=325</guid>

					<description><![CDATA[0x00 前言 印象中Chrome一直是很不错的一款浏览器,但随着Google的变化它的功能和UI也不再那么单纯. 从v69开始,Google将默认的Chrome UI改成了Material Refresh, 随后在v71的某个stable release中彻底删掉了用户回滚传统UI的选项. 对大部分用户而言, UI的变更可能根本不是值得在意的事情, 甚至可能有的用户没有注意到UI的变化. 但我是很难接受这个(个人感觉)效率极低而且很丑的UI的, 因此就有了自己修改一个Chromium的想法. * 此页面中部分内容可能已经过时, 请以 GitHub 上最新的 Patch 为准. 如果您想就UI是否好看和我讲道理或者把我批判一番, 建议立刻关闭此页面. FENGberd 不要问我图为什么都是糊的, 你得问 Snipaste&#8230;截图质量已经设为100了而且上传都没有压缩 :/ 0x01 获取代码 获取代码并编译的内容已迁移至 下载源码 &#38; 编译Chromium , 本文只介绍对Chromium进行的修改 0x02 开始修改 此处的修改说明是针对 74.0.3729.108(Stable) EyeProtect-v1.0.1 进行的 注意: 本项目中几乎所有绘制/样式相关的代码都来自v69的Chromium, 这些代码的版权都属于它们的原作者 0001. 添加Flags 为了让用户能方便的开启/关闭Eye-Protect功能, 同时也是为了保证EP出现问题时可以Fallback到原版UI而不需要去安装其他浏览器, 我们在 chrome://flags 里添加一个Flag来控制Eye-Protect功能. 首先我们来到 flag-metadata.json 并添加自己的Flag定义以便编译器能识别这个Flag 然后在 [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>下载源码 &#038; 编译Chromium</title>
		<link>/archives/get-code-and-compile-chromium/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Sun, 24 Mar 2019 07:50:44 +0000</pubDate>
				<category><![CDATA[迷の代码]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=299</guid>

					<description><![CDATA[0x00 前言 这篇Blog主要是说明在 Windows 上 Get Code &#38; Compile 的一些步骤和需要注意的坑, 主要是从 Chromium-EyeProtect 迁移过来的内容 注意: 在对Chromium这种大项目进行任何操作前请确保你已经了解了一些Git基本概念, 大部分代码分支切换、合并、更新均通过Git完成. Git不规范, 修库两行泪. 如果需要学习Git基本知识请参考 https://git-scm.com/book/en/v2/ , 这本书写的非常详细, 对于快速入门很有帮助 另外, Chromium的每个SNAPSHOT或者正式版都会建一个版本号Tag, 所以可以直接运行 git checkout -b eye-protect 75.0.3741.2这样的指令来直接切换到特定Release而不用去翻Commit日志 之前翻日志翻得头疼直到无意间敲了git tag 0x01 Get Code 既然要对Chromium动刀, 第一步肯定是Get Code了,官方在 https://www.chromium.org/developers/how-tos/get-the-code 已经很详尽的阐述了拉取代码的步骤, 此处不再赘述. 这里写出来的主要是操作过程中可能碰到的坑和可能加速开发效率的提示 (对初次接触depot_tools的人很重要, 这个工具资料很少, 用起来都得自己摸索): fetch代码时不能断点续传, 如果操作中断必须删掉整个文件夹重新fetch 建议传入 --nohooks 在fetch完成后手动使用gclient运行Hook, 防止不必要的意外 fetch代码时如果有翻阅Commit记录的需求, 不要传入 --no-history [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>在 Chrome 中加载企业支付宝的数字证书</title>
		<link>/archives/load-alipay-cert-in-chrome/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Fri, 10 Feb 2017 05:48:16 +0000</pubDate>
				<category><![CDATA[失效/过期]]></category>
		<category><![CDATA[踩坑]]></category>
		<category><![CDATA[迷の代码]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=121</guid>

					<description><![CDATA[我们都知道,支付宝是一个商业公司,Google是一个科技公司 ** 2019年以来,Google连Do no stupid都做不到, 根本不是以前的Do no evil. 上面那句话仅针对Do no evil的Google 🙂 当支付宝开发跟不上Chrome的进步速度时就会出现&#8221;当前操作环境不支持支付宝控件&#8221;这种尴尬的情况(国内大部分银行也这样- -): 如果你一路点进帮助中心,就会发现官方说法中数字证书是不支持Chrome甚至不支持IE11的 本文提供一种方式,让Chrome强行安装数字证书并正常使用(仅在x86机器上测试,x64不确定)首先,通过User-Agent修改插件将UA修改为IE10 刷新即可看到提示安装数字证书控件的页面 点击后下载并安装支付宝数字证书控件,然后重启浏览器(图略)接下来再次回到此页面(别忘了打开UA修改)就可以正常进行证书安装了(依然没图)需要注意的是提示是否进行证书安装那个对话框好像会跑到Chrome下面,注意看着点任务栏,不然还以为一直卡在安装上&#8230; 安装成功后,别急着兴奋,现在数字证书可以正常用一段时间,但你重启浏览器后就会出现无法检测到数字证书的情况,而手动点进管理页面后就会提示已安装数字证书然后证书又可以用了&#8230; 我们总不可能每次都点进这个页面一次吧 &#8211; -那样很累的 因此我写了这个插件:AlipayHelper.zip zip中包含了打包好的crx文件和源码,如果碰到提示&#8221;无法添加来自此网站的应用,程序和用户脚本&#8221;可以尝试直接将扩展程序拖到 chrome://extensions 这个界面,新版Chrome中加载插件后无法启用的解决方案可以参考 这篇博客 ,加载完毕后退出支付宝并重新登录应该就可以正常使用了 插件原理:首先这个插件注册了一个onBeforeRequest的Listener来拦截跳转到&#160;https://authzth.alipay.com/login/certCheck.htm?goto=(这里是目标地址) 的请求,通过这个请求得到下一步跳转的目标地址(从goto=这里用正则表达式匹配) chrome.webRequest.onBeforeRequest.addListener(function(request) { if(request.method=='GET') // 支付宝对这个URL的操作有两步,第一步带着goto=进行GET请求,下一步由GET得到的页面进行POST请求 { var match=request.url.match(/(^&#124;\?&#124;&#38;)goto=([^&#38;]*)(&#38;&#124;$)/); // 正则匹配 if(match) { jump_url=unescape(match[2]); // 设置要拦截的地址 } } }, { urls: [ 'https://authzth.alipay.com/login/certCheck.htm*' ] },['blocking']); 接下来在另一个Listener里拦截目标地址 [&#8230;]]]></description>
		
		
		
			</item>
		<item>
		<title>给 Chrome 添加非应用商店扩展程序的正确姿势</title>
		<link>/archives/add-third-app-to-chrome/</link>
		
		<dc:creator><![CDATA[FENGberd]]></dc:creator>
		<pubDate>Sun, 22 Jan 2017 08:37:06 +0000</pubDate>
				<category><![CDATA[失效/过期]]></category>
		<category><![CDATA[踩坑]]></category>
		<category><![CDATA[Chrome]]></category>
		<guid isPermaLink="false">/?p=104</guid>

					<description><![CDATA[从2018年(具体Chrome版本未知)开始此方法已失效,即使添加了信任安装源也无法正常启用拓展. 请参阅 这篇博客 获取在 2021 年 (v77+) 有效的方法. 从Chrome 30+开始,非应用商店的拓展就无法正常启用了,比如 那么,如何正确的启用这些拓展呢? Google Support给出了一个方案: 如果需要使用某个已停用的扩展程序，您可以联系该扩展程序的开发者，让他们将该扩展程序上传到 Chrome 网上应用店。这样，您和其他 Chrome 用户便可通过 Chrome 网上应用店来安装该扩展程序；或者，如果您已经安装了该扩展程序，则可手动从您的扩展程序列表中重新启用它。 Google Support 很显然这个方法不是很好用, 如果修改了别人的拓展, 更是不可能(也不应该)挂到应用商店去. 但也不是完全没有办法,可以通过在Chrome的应用白名单里添加appid实现此目的 首先,通过 这篇帮助文档&#160;我们可以找到&#160;Chrome管理模板的下载地址 下载后,在windows\adm\系统语言(其他语言也可以,不过可能会存在编码问题/和系统整体风格对不上之类的问题) 这个文件夹内找到对应的管理模板 将chrome.adm解压到任意位置,打开组策略(gpedit.msc,没有的话自己想办法解决咯)并右键点击计算机配置-&#62;管理模板一项并选择[添加/删除模板] 在新窗口中选择添加一项,找到刚才解压出来的chrome.adm并添加进去 添加成功后应该是这个样子的 此时就可以关闭窗口并删掉adm文件了(注:此处如果组策略管理器卡住未响应,可以强制关闭并重新打开,模板应该已经添加好了) 接下来找到 经典管理模板(ADM)\Google\Google Chrome\扩展程序 文件夹中的 &#8220;配置扩展程序安装白名单&#8221; 双击此项,选择&#8221;已启用&#8221;并点击&#8221;显示&#8230;&#8221; 接下来在 扩展程序管理页面 (chrome://extensions/) 中找到你要添加的应用ID 将此应用ID复制到刚才打开的&#8221;显示内容&#8221;对话框里并点击确定 然后关掉组策略配置,刷新扩展管理页面即可启用第三方应用 话说Chrome很多地方是为大部分用户着想的,但对喜欢折腾的developers来说好像有点不太友好]]></description>
		
		
		
			</item>
	</channel>
</rss>
