
브라우저 익스플로잇을 대상으로 하는 업데이트된 리소스 모음입니다.
브라우저 세계는 4개의 주요 플레이어가 지배하고 있습니다:
다음 내용은 두 부분으로 나뉩니다:
물론 소스를 탐색할 때 자신이 선호하는 설정을 사용할 수 있습니다. 하지만 이 저장소들은 비교적 크기가 크며, 저는 제게 맞는 설정을 찾을 때까지 몇 가지 다른 설정을 시도해 보았습니다. 따라서 아직 좋은 설정이 없다면, 도움이 될 만한 제 경험 몇 가지를 소개합니다:
기사:
Blink의 JavaScript 엔진은 V8입니다.
빌드 (Ubuntu 18.04):
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:./depot_tools
$ gclient
$ mkdir ./v8 && cd ./v8
$ fetch v8 && cd v8
$ git pull
$ gclient sync
$ ./build/install-build-deps.sh
$ tools/dev/gm.py x64.release
$ out/x64.release/d8
유용한 플래그:
--print-opt-code: 최적화 컴파일러가 생성한 코드--print-byte-code: 인터프리터가 생성한 바이트코드--trace-ic: 호출 지점이 만나는 다양한 객체 타입--trace-opt 및 --trace-deopt: 어떤 함수가 (역)최적화되는지--trace-turbo: Turbolizer 시각화를 위한 TurboFan 추적기사:
V8은 Turbolizer라는 TurboFan용 시각화 도구를 제공합니다.
기사:
--trace-turbo 플래그로 v8 실행: d8 --trace-turbo foo.jsturbo-foo-0.json)v8/tools/turbolizer로 이동하여 README.md에 설명된 대로 npm으로 설치python -m SimpleHTTPServer 8000)localhost:8000으로 접속하여 turbo-foo-0.json 열기Gecko의 JavaScript 엔진은 Spidermonkey입니다.
빌드 (Ubuntu 18.04):
$ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
$ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
$ cd js/src
$ autoconf2.13
# This name should end with "_DBG.OBJ" to make the version control system ignore it.
$ mkdir build_DBG.OBJ
$ cd build_DBG.OBJ
$ ../configure --enable-debug --disable-optimize
# Use "mozmake" on Windows
$ make -j 6
$ js/src/js
Spidermonkey는 IonGraph라는 IonMonkey용 시각화 도구를 제공합니다.
Webkit의 JavaScript 엔진은 JavaScriptCore (JSC)입니다.
기사:
# sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
$ git clone git://git.webkit.org/WebKit.git && cd WebKit
$ Tools/gtk/install-dependencies
$ Tools/Scripts/build-webkit --jsc-only --debug
$ cd WebKitBuild/Release
$ LD_LIBRARY_PATH=./lib bin/jsc
WebKit은 오버헤드 성능 비용과 성능 이점 간의 트레이드오프를 나타내는 4계층 JIT 컴파일러 시스템을 갖추고 있습니다.
기사:
Edge가 렌더링 엔진으로 Blink 및 Chromium 프로젝트로 전환한 이후, Edge는 V8을 사용하고 있습니다. 원래 Edge는 ChakraCore JavaScript 엔진을 사용하는 EdgeHTML이라는 자체 렌더링 엔진을 보유하고 있었습니다.
# To build ChakraCore on Linux: (requires Clang 3.7+ and Python 2)
$ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
$ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
$ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
$ out/Debug/ch