前言

浏览器漏洞在 APT 攻击中用的比较多,而且这基本上是用户上网的标配了,所以研究浏览器的漏洞是十分有前景的,我认为。我选择 chrome 浏览器 ( chromiumchrome之间的关系请自行百度 )为研究对象,主要原因如下:

  • 用户基数大,大量的用户使用 chrome 或者由 chrome 改装的浏览器。
  • 安卓从 4.4 就已经开始使用 chromiumv8 作为 webkit,所以chrome 中的漏洞极有可能在 安卓上也有。

工欲善其事,必先利其器 , 本文主要讲环境的搭建,包括 chrome的编译与调试 && v8 引擎到的编译与调试。

测试环境

Win10 64 位, Visual Studio 2015

正文

Chrome编译

Visual Studio 2015

如果你有比较稳定(速度要快,不然得下特别久)的 翻墙 方案,可以直接按照官方的教程来。

在不能 翻墙 时,可以按照我的方案来。

首先下载下面的资源, 其中包括 chrome 58 的源代码, 以及编译时需要的工具。

链接: https://pan.baidu.com/s/1qXMy19U 密码: 49kx

然后下载安装 Visual Studio 2015 , 在安装的时候除了 移动开发相关 的取消掉,其他的都选上,以免重来 , 要不然重新安装又得花特别长的时间。

如果系统语言是 中文 的话还需要,修改 非Unicode 程序的语言英语(美国) , 如下图所示

depot_tools

然后解压 depot_tools-2017-1-ALL.rar 到一个目录,目录名不要有 空格, 中文 。然后把目录添加到环境变量,后面编译时要用到。

比如我的 depot_tools 的目录是 D:\depot_tools\depot_tools

然后新建一个 DEPOT_TOOLS_WIN_TOOLCHAIN 系统变量, 其值设为 0.

设置 chromium 源码

首先解压 chromium 到一个目录,然后解压 develop-for-Stable-chromium-58.0.3029.81.zip 文件,然后拷贝相应文件夹到 chromium 源码目录,覆盖掉相应的文件夹。

编译

进入源码目录,执行命令,生成编译需要的文件和 vs 2015 的解决方案。

gn gen out/Default --args="enable_nacl=false"
gn args out/Default --ide=vs

然后使用 ninja 编译

ninja -C out\Default chrome

如果没有问题,等几个小时就好了。然后会在 out\Default 下生成 chrome.exe 和相关的 dllpdb 调试文件。

调试

方案一

使用 Visual Studio 2015 加载 all.sln 直接调试。

方案二

Visual Studio 2015 会非常的慢, 可以使用 windbg preview 调试,图形化,而且快,也有 windbg 的强大功能

windbg preview 可以在 windows store 下载

打开点击 左上角 文件, 根据情况设置好即可。

这里以 调试 node 为例 (原因是 node 使用 v8

首先进入 settings 设置符号路径。



然后根据上上图设置调试的程序 和 参数。 点击 ok 运行之

设置断点,断点断下来后可以直接定位到源码(自己编译)



调试信息非常的直观

编译 node

有时漏洞是位于 v8 引擎里面的。 我们可以使用 node 或者 d8来调试 v8 ,这样调试速度比较快。

node 可以去 淘宝的 镜像 里面下载, 这样速度快。

下载完后,解压。如果是在 windows 下编译,先运行

生成 vs 解决方案,然后编译就行了。

如果在 linux 下 直接

./configure --debug && make -j8

Play-with-chrome之环境搭建的更多相关文章

  1. selenium+java+chrome 自动化测试环境搭建

    安装jdk    (jdk 配置环境变量)    eclipse(可用免安装的) 安装谷歌浏览器 下载chorme driver (chorme driver 也要配置环境变量,将chormedriv ...

  2. Selenium + Python + Chrome 自动化测试 环境搭建

    一.下载Python 相关的教程很多,此处不详细记录了,下面是官网下载地址: https://www.python.org/downloads/ 我使用的python版本为 Python 3.6.1 ...

  3. Ubuntu环境搭建系列—Chrome/JDK/Android篇

    其实每次重装Ubuntu系统的时候都要进行一次基本到环境配置,而且每次总会忘记一些环境配置到东西,所以就写下这个博文,方便自己以后重装系统的时候回顾,同时也给大家做为重装系统后基本环境搭建的参考. 因 ...

  4. Chrome 插件PPAPI 开发(一)环境搭建

    前言:本文参考了其他已有的文章,在其基础上简化了一些没有必要的操作. 同时也记录一下chrome 插件ppapi环境的基础搭建.并且感谢已有文章作者的大无畏的分享精神! 在这附上参考文章链接:http ...

  5. Firfox、Chrome之python-selenium环境搭建

    公共步骤: 一.文件下载 下载地址: python安装包:https://www.python.org/getit/ PyCharm 安装包:http://www.jetbrains.com/pych ...

  6. React Native的环境搭建以及开发的IDE

    (一)前言 前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging).本节的前提条件 ...

  7. webDriver环境搭建与测试

    1.安装jdk 2.安装eclipse 3.安装selenium 由于使用的是开发语言是java,因此需要安装java版的selenium包.下载地址:http://pan.baidu.com/s/1 ...

  8. Ubuntu Desktop开发生产环境搭建

    Ubuntu Desktop开发生产环境搭建 1   开发生产环境搭建 在本节内容开始前,先定义一下使用场合,没有哪种系统或者设备是万能的,都有它的优点和缺点,能够在具体的使用场景,根据自身的需求来取 ...

  9. Ubuntu Desktop基本办公环境搭建

    Ubuntu Desktop基本办公环境搭建 一如前面所强调的, linux系统是面向开发人员友好的,而对office办公人员并不友好 . 如果是重度的office办公需求人员,不建议使用linux ...

  10. [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建

    在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识. ...

随机推荐

  1. POJ 2248

    #include <iostream> #define MAXN 100 #define min __min using namespace std; int tem[MAXN]; int ...

  2. Winform—C#读写config配置文件

    现在FrameWork2.0以上使用的是:ConfigurationManager或WebConfigurationManager.并且AppSettings属性是只读的,并不支持修改属性值. 一.如 ...

  3. JSON JSONPath

    JSONPath is a query language for JSON, similar to XPath for XML. AlertSite API endpoint monitors let ...

  4. pthon获取word内容之获取表单

    需求:把word里面的表单内容获取 按照规则拼成字符串 转换成类似下面的样子 代码如下: from docx import Document import re def parse_docx(f): ...

  5. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! Hue配置文件里,提及到,提供有postgresql_psycopg2, mysql, sqlite3 or oracle. 注意:Hue本身用到的是sqlite3. 在哪里呢, ...

  6. Ubuntu11.10 带图形安装步骤详解

    不多说,直接上干货! 成功!  关于Ubuntu的网络设置.静态IP设置,见 Ubuntukylin-14.04-desktop( 不带分区)安装步骤详解 Ubuntukylin-14.04-desk ...

  7. JAVA跨域资源访问CORSFilter

    当一个资源从与该资源本身所在的服务器不同的域或端口不同的域或不同的端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求.跨域资源共享机制允 ...

  8. n-grama

    一.N-Gram的原理(这个词出现在句子中出现的概率) N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关.(这也是隐马尔可夫当中的假设.)整个句子出现的概率就等于各个词 ...

  9. fiddler工作原理和设置代理问题

    1,什么是Fiddler Fiddler是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的 ...

  10. 求两个Linux文本文件的交集、差集、并集

    一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.tx ...