
Eine aktualisierte Sammlung von Ressourcen, die auf Browser-Exploitation abzielen.
Die Welt der Browser wird von 4 Hauptakteuren dominiert:
Das Folgende ist in zwei Teile gegliedert:
Natürlich kannst du dein eigenes Lieblings-Setup verwenden, um die Quellen zu durchsuchen. Allerdings sind diese Repos relativ groß, und ich habe einige verschiedene Setups ausprobiert, bis ich etwas gefunden habe, das für mich funktioniert hat. Wenn du also noch kein gutes Setup hast, findest du hier ein paar meiner Erfahrungen, die dir helfen könnten:
Artikel:
Die JavaScript-Engine von Blink ist V8.
Projekt | GitHub | Quelle | Build-Anleitung
Build (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
Nützliche Flags:
--print-opt-code: vom optimierenden Compiler erzeugter Code--print-byte-code: vom Interpreter erzeugter Bytecode--trace-ic: verschiedene Objekttypen, die eine Aufrufstelle antrifft--trace-opt und --trace-deopt: welche Funktionen (de)optimiert werden--trace-turbo: TurboFan-Traces für die Turbolizer-VisualisierungArtikel:
V8 bietet eine Visualisierung für TurboFan namens Turbolizer
Artikel:
--trace-turbo aus: d8 --trace-turbo foo.jsturbo-foo-0.jsonv8/tools/turbolizer und installiere es mit npm, wie in README.md beschriebenpython -m SimpleHTTPServer 8000localhost:8000 auf und öffne turbo-foo-0.jsonDie JavaScript-Engine von Gecko ist Spidermonkey.
Projekt | Quelle | Build-Anleitung
Build (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 bietet eine Visualisierung für IonMonkey namens IonGraph
Die JavaScript-Engine von Webkit ist JavaScriptCore (JSC).
Artikel:
# 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 hat ein 4-Schichten-JIT-Compiler-System, das den Kompromiss zwischen Overhead-Leistungskosten und Leistungsgewinn darstellt.
Artikel:
Da Edge auf Blink und das Chromium-Projekt als Rendering-Engine umgestellt hat, verwendet Edge jetzt V8. Ursprünglich hatte Edge eine eigene Rendering-Engine namens EdgeHTML, die die JavaScript-Engine ChakraCore verwendete.
# 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