
Une collection actualisée de ressources ciblant l'exploitation de navigateurs.
Le monde des navigateurs est dominé par 4 acteurs majeurs :
Ce qui suit est divisé en deux parties :
Bien sûr, vous pouvez utiliser votre configuration préférée pour parcourir les sources. Cependant, ces dépôts sont relativement volumineux et j'ai essayé plusieurs configurations différentes avant de trouver celle qui me convenait. Donc, si vous n'avez pas déjà une bonne configuration, voici quelques-unes de mes expériences qui pourraient vous aider :
Articles :
Le moteur JavaScript de Blink est V8.
Projet | GitHub | Sources | Comment compiler
Compilation (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
Options utiles :
--print-opt-code : code généré par le compilateur optimisant--print-byte-code : bytecode généré par l'interpréteur--trace-ic : les différents types d'objets rencontrés par un site d'appel--trace-opt et --trace-deopt : quelles fonctions sont (dé)optimisées--trace-turbo : traces TurboFan pour la visualisation TurbolizerArticles :
V8 fournit une visualisation pour TurboFan appelée Turbolizer
Articles :
--trace-turbo : d8 --trace-turbo foo.jsturbo-foo-0.jsonv8/tools/turbolizer et installez avec npm comme décrit dans README.mdpython -m SimpleHTTPServer 8000localhost:8000 et ouvrez turbo-foo-0.jsonLe moteur JavaScript de Gecko est Spidermonkey.
Projet | Sources | Comment compiler
Compilation (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 fournit une visualisation pour IonMonkey appelée IonGraph
Le moteur JavaScript de Webkit est JavaScriptCore (JSC).
Articles :
# 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 dispose d'un système de compilateur JIT à 4 couches, représentant le compromis entre le coût en performance de la surcharge et le bénéfice en performance.