View8 est un outil d'analyse statique conçu pour décompiler les objets bytecode V8 sérialisés (fichiers JSC) en code lisible de haut niveau. Pour analyser et démonter ces objets sérialisés, View8 utilise un binaire V8 compilé corrigé. En conséquence, View8 produit une sortie textuelle similaire à JavaScript.
9.4.146.24 (utilisé dans le nœud v16.x)10.2.154.26 (utilisé dans le nœud v18.x)11.3.244.8 (utilisé dans Node v20.x)Pour les versions compilées, visitez la page des versions.
input_file : le nom du fichier d'entrée.output_file : le nom du fichier de sortie.--path , -p : Chemin de désassembleur binaire (facultatif).--disassembled , -d : indiquez si le fichier d'entrée est déjà démonté (facultatif).--export_format , -e : Spécifiez le (s) format d'exportation. Les options sont v8_opcode , translated et decompiled . Plusieurs options peuvent être combinées (facultative, par défaut: decompiled ).Pour décompiler un fichier bytecode V8 et exporter le code décompilé:
python view8.py input_file output_file Par défaut, view8 détecte la version bytecode V8 du fichier d'entrée (à l'aide VersionDetector.exe ) et recherche automatiquement un binaire de désassembleur compatible dans le dossier Bin . Cela peut être modifié en spécifiant un autre démontrant binaire, utilisez l'option --path (ou -p ):
python view8.py input_file output_file --path /path/to/disassembler Pour sauter le processus de démontage et fournir un fichier déjà démonté comme entrée, utilisez le drapeau --disassembled (ou -d ):
python view8.py input_file output_file --disassembled Spécifiez le (s) format d'exportation à l'aide de l'option --export_format (ou -e ). Vous pouvez combiner plusieurs formats:
v8_opcodetranslateddecompiledPar exemple, pour exporter à la fois V8 Opcodes et code décompilé côte à côte:
python view8.py input_file output_file -e v8_opcode decompiled Par défaut, le format utilisé est decompiled .
La version V8 Bytecode est stockée sous forme de hachage au début du fichier. Vous trouverez ci-dessous les options disponibles pour VersionDetector.exe :
-h : récupère une version et renvoie son hachage.-d : récupère un hachage (Little-Endian) et renvoie sa version correspondante en utilisant Brute Force.-f : récupère un fichier et renvoie sa version.