funfuzz
是 Mozilla 开源的一个JavaScript fuzzer 工具集合,提供了一个针对 Mozilla 的 Spidermonkey 的有力fuzz工具。
SpideMonkey
SpiderMonkey是世界上第一款JavaScript引擎,由前网景公司的布兰登·艾克设计,后期由Mozilla基金会维护,以开放源代码发布。目前为Mozilla Firefox网页浏览器所使用的JavaScript引擎,并也被嵌入到其他许多环境,例如GNOME 3桌面。
From Wikipedia
官方文档:SpiderMonkey: The Mozilla JavaScript runtime
在 Mozilla 官方对 SpiderMonkey 的文档中提到,这个JavaScript引擎是用C/C++写的,而在这上,还有构建的一个JS Shell,还没闹明白是咋用的呢。
Build 过程
clone funfuzz仓库到本地
# 我是直接保存到了根目录下
git clone https://github.com/MozillaSecurity/funfuzz.git
通过 pip 安装所需的软件包(可能出现问题,后文有说)
cd ~/funfuzz
pip install -r requirements.txt
# or
pip3 install -r requirements.txt
下载 Mozilla - central
mkdir -p ~/trees/
hg clone https://hg.mozilla.org/mozilla-central/ ~/trees/mozilla-central/
在这个mozilla-central
中,有 Mozilla 自家的多功能构建工具mach
以及一系列在进行 Mozilla 相关操作的时候需要用到资源。
开发者(debug) Build
设定一个 MOZCONFIG
mkdir -p ~/mozconfigs
新建一个debug
文件,文件内容是
# Build only the JS shell
ac_add_options --enable-application=js
# Disable Optimization, for the most accurate debugging experience
ac_add_options --disable-optimize
# Enable the debugging tools: Assertions, debug only code etc.
ac_add_options --enable-debug
设置环境变量
export MOZCONFIG=$HOME/mozconfigs/debug
Building
使用 Mozilla - central 中的mach
工具进行构建
cd ~/trees/mozilla-central/
./mach build
过程中可能会提示需要先进行一步(关于bootstrap是啥我刚刚也查了一下,相关资料在后面)
./mach bootstrap
在安装的过程中有一系列选项,我粗略看了一下,恩,都看不懂,直接一路回车选默认了。
安装完bootstrap
之后,就可以通过一些指令来补充安装一些 build 过程所必需的内容了。
JS Shell
这一部分还没有时间仔细看…
funfuzz
在 GitHub 的文档中有如下提示
- 为了确保当多个实例同时崩溃时核心转储不会混淆,请运行:
echo -n 1 | sudo tee /proc/sys/kernel/core_uses_pid
- 安装32位库以编译32位二进制文件:
- Debian / Ubuntu:
sudo apt-get install lib32z1 gcc-multilib g++-multilib
- Fedora :(已知可以使用Fedora,但是目前尚不知道确切的库名称。)
- 安装gdb:
- Debian / Ubuntu:
sudo apt-get install gdb
- Fedora:请确保已安装所有开发包(请参阅参考资料
rpm -qa "*devel"
)并运行yum install gdb
- 为clang / ASan构建安装clang:
- Debian / Ubuntu:
sudo apt-get install clang
- Clang用于64位版本,而GCC用于某些较旧的32位版本
过程踩坑
pip 版本
如果本地的 pip 对应的是 python2,可能会出现失败的情况。需要手动下载一个 python3 对应的 pip。
关于 pip 的一些参考命令 pip简单教程
除了如何搞定 pip3 ,我还找到了一些其他可能会用到的东西。
Linux-Ubuntu16.04下Python3.5安装pip3以及scrapy、numpy、itchat
bootstrap 是啥
根据各种网上资料的描述
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。
Bootstrap 是一个工具包,其中包括很多内容
- 基本结构:Bootstrap 提供了一个带有网格系统、链接样式、背景的基本结构。这将在 Bootstrap 基本结构 部分详细讲解。
- CSS:Bootstrap 自带以下特性:全局的 CSS 设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统。这将在 Bootstrap CSS 部分详细讲解。
- 组件:Bootstrap 包含了十几个可重用的组件,用于创建图像、下拉菜单、导航、警告框、弹出框等等。这将在 布局组件 部分详细讲解。
- JavaScript 插件:Bootstrap 包含了十几个自定义的 jQuery 插件。您可以直接包含所有的插件,也可以逐个包含这些插件。这将在Bootstrap 插件部分详细讲解。
- 定制:您可以定制 Bootstrap 的组件、LESS 变量和 jQuery 插件来得到您自己的版本。