盒子
盒子
文章目录
  1. 环境:
  2. 终端代理:
    1. 注意点:
  3. 安装depot_tools:
  4. 安装ninja:
  5. 生效zshrc:
  6. 编译v8:
    1. 注意点:
  7. 调试不同版本:

v8-调试环境搭建

环境:

Ubuntu16.04

终端代理:

我这里用的是某R,客户端用的是electron-**r,所以免去了http代理设置,但仍需要设置终端代理:

1
2
export http_proxy=http://127.0.0.1:12333
export https_proxy=http://127.0.0.1:12333

以上端口根据http代理设置端口更改,且该设置方法只作用于当前终端,不会影响环境。

注意点:

这里可以先测试一下是否加上代理:

1
curl http://www.google.com

如果成功,那么就是配置完成。

但是如果仍旧无法gitdepot_tools,并且报了RPC Failed错误,那么这时候不要去网上找解决方案,你只需要换一个代理,换到不报错就行。个人猜测是代理不稳定的缘故。(希望大家遇不到这种错,我的血泪教训,搞这问题搞哭了orz

安装depot_tools:

1
2
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
echo 'export PATH=$PATH:"/path/to/depot_tools"' >> ~/.zshrc

这里的.zshrc或者.bashrc根据自己环境更改,/path/to根据路径更改。

安装ninja:

1
2
3
4
5
git clone https://github.com/ninja-build/ninja.git
cd ninja
./configure.py --bootstrap
cd ..
echo 'export PATH=$PATH:"/path/to/ninja"' >> ~/.zshrc

生效zshrc:

1
source ~/.zshrc

编译v8:

1
2
3
fetch v8
cd v8
gclient sync

debug模式:

1
2
tools/dev/v8gen.py x64.debug
ninja -C out.gn/x64.debug

release模式:

1
2
tools/dev/v8gen.py x64.relase
ninja -C out.gn/x64.relase

注意点:

这里在fetch或者ninja -C过程中会有报错,有很大的原因是因为机子的内存分配不够(编译需要跑的比较好orz。加到4G以上一般编译就很流畅了。如果是中途中断了,那么用gclient sync即可从之前断点开始跑。

编译完成后在x64.debug下的d8就是引擎了。

调试不同版本:

在分析之前漏洞的时候需要check到之前的分支去调试。

假如我需要分析hash2bd7464ec1efc9eb24a38f7400119a5f2257f6e6的版本,那么我们切回分支:

1
2
3
4
5
6
git reset --hard 2bd7464ec1efc9eb24a38f7400119a5f2257f6e6
或者
git checkout 2bd7464ec1efc9eb24a38f7400119a5f2257f6e6
gclient sync
tools/dev/v8gen.py x64.debug
ninja -C out.gn/x64.debug

即可得到有漏洞版本的d8

如果是自己所编写的带漏洞的版本那么便需要applydiff文件:

1
2
3
4
5
git checkout 2bd7464ec1efc9eb24a38f7400119a5f2257f6e6
gclient sync
git apply ***.diff
tools/dev/v8gen.py x64.debug
ninja -C out.gn/x64.debug
支持一下
扫一扫,支持v1nke
  • 微信扫一扫
  • 支付宝扫一扫