ubuntu chromium+v8调试环境搭建
Ubuntu环境配置
1、允许root登录并进行ubuntu初始修改
1 | sudo passwd root |
2、配置linux全局代理,使终端可以访问墙外的v8编译相关资源
比如qv2ray,相关链接:https://www.zsxcool.com/7137.html
再比如Trojan-QT5,相关链接:https://github.com/Shadowsocks-Wiki/shadowsocks/blob/master/zh_CN/trojan/ubuntu-trojan-qt5-setup-guide.md
2、一般采用虚拟机搭建v8环境,方便环境的维护,推荐虚拟机采用vmware NAT那块网卡,这时我们在本地做全局代理时(比如Netch),虚拟机内部也可以有比较顺畅的网络环境。
v8环境配置
下载depot_tools,v8并进行编译
1 | mkdir /root/tools && cd /root/tools |
过程中遇到的问题
1、running depot tools as root is sad
如果root用户使用该工具会弹出该警告,无视即可
2、遇到 NOTICE: You have PROXY values set in your environment, but gsutilin depot_tools does not (yet) obey them.
Also, –no_auth prevents the normal BOTO_CONFIG environmentvariable from being used.
To use a proxy in this situation, please supply those settingsin a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environmentvariable.
缺少代理的环境变量,基本在你自己在虚拟机内布置代理环境才会出现这个问题,采用NAT网卡一般不会出现这个问题,踩太多坑了。
1 | mkdir /root/tools/.boto |
3、Failed to download https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/43a87bbebccad99325fdcf34166295b121ee15c7/debian_sid_amd64_sysroot.tar.xz
Error: Command ‘vpython build/linux/sysroot_scripts/install-sysroot.py –arch=x64’ returned non-zero exit status 1 in /root/v8/v8
出现这种问题是因为网络原因,可以重新进行gclient sync或更换代理服务器
4、Error: client not configured; see ‘gclient config’
1 | # gclient config https://chromium.googlesource.com/chromium/src.git |
参考链接:https://stackoverflow.com/questions/8684282/gclient-runhooks-fails
chromium环境配置
有了上面v8搭建的过程,这里的过程看起来就更容易理解一些,实际上二者的搭建过程没有太大的差距,因为google官方将搭建过程都封装到了depot_tools中了。二者的体量差别还是比较大的,截至2022.1,chromium最新大概5w多个文件,而v8在2k文件左右
1 | mkdir ~/chromium && cd ~/chromium |
启动chromium时,asan提示odr-violation
报错
1 | # Kiprey @ Kipwn in /usr/class/chromium [14:19:24] C:1 |
odr-violation
这类错误我们忽略即可,因此我们需要设置一下环境变量ASAN_OPTIONS
,最好编辑配置文件将其永久配置
1 | export ASAN_OPTIONS=detect_odr_violation=0 |
之后即可正常执行chrome。
参考链接
- https://kiprey.github.io/2020/11/fetch-chromium/
- https://bbs.pediy.com/thread-252812-1.htm
- browser-pwn-基础知识.pdf
其他
1、vscode关闭代码错误提示
vscode内Ctrl + Shift + P搜索:errorSquiggles,禁用错误波形曲线
2、配置gdb插件
下面可以挑选一个gdb调试工具,统一将gdb脚本的路径放入/root/.gdbinit
中。
gef
1 | git clone https://github.com/hugsy/gef |
pwndbg
1 | git clone https://github.com/pwndbg/pwndbg |
peda
1 | git clone https://github.com/longld/peda.git ~/peda |
还需要将v8的gdb插件放入gdbinit中,路径如下(路径取决于自己本机环境)
1 | /root/v8/v8/tools/gdbinit |
Windows chromium+v8调试环境搭建
有了上面ubuntu安装的经验,再windows上搭建调试环境会轻松不少。
windows里面需要额外安装SDK以及vs,毕竟需要vs进行调试。
v8环境配置
1、下载安装vs2019或者vs2022,并配置python环境
2、下载SDK并安装
3、下载安装depot_tools
,并配置depot_tools安装目录的环境变量并确保其在python的环境变量前
1 | git clone https://chromium.googlesource.com/chromium/tools/depot_tools |
4、配置环境变量
三个环境变量,编译chromium也需要他们,depot_tools的环境变量要在python的上面(vs的路径按照自己电脑的路径)
DEPOT_TOOLS_WIN_TOOLCHAIN | vs2022_install | PATH |
---|---|---|
0 | C:\Program Files\Microsoft Visual Studio\2022\Community | C:\software\depot_tools |
5、运行gclient,初始化工具
1 | gclient |
6、fetch源码并更新,其他的步骤就和ubuntu的一样了
1 | mkdir v8 && cd v8 |
如果不使用gm.py脚本,也可以使用gn工具进行构建
1 | cd E:\v8\v8 |
上面的命令会生成工作目录,路径为E:\v8\v8\out\Default,里面有一个all.sln的文件,使用vs打开
之后在160个项目中找到gn_all,编译之,最后即可调试E:\v8\v8\out\Default\d8.exe。
chromium环境配置
配置vs和SDK还有环境变量等过程和上面配置v8时一致,只是在最后fetch和编译时有些许差别
1 | mkdir chromium && cd chromium |
或者使用vs进行编译调试
1 | gn gen --ide=vs out\debug_by_vs --args="is_component_build = true is_debug = true v8_optimized_debug = false" |
最后找到gn_all,编译之,最终得到可执行文件。