View8 é uma ferramenta de análise estática projetada para descompilar objetos serializados V8 ByteCode (arquivos JSC) em código legível de alto nível. Para analisar e desmontar esses objetos serializados, o View8 utiliza um binário V8 compilado. Como resultado, o View8 produz uma saída textual semelhante ao JavaScript.
9.4.146.24 (usado no nó v16.x)10.2.154.26 (usado no nó v18.x)11.3.244.8 (usado no nó v20.x)Para versões compiladas, visite a página de lançamentos.
input_file : o nome do arquivo de entrada.output_file : o nome do arquivo de saída.--path , -p : caminho para desmontar o binário (opcional).--disassembled , -d : indique se o arquivo de entrada já está desmontado (opcional).--export_format , -e : especifique o (s) formato (s) de exportação. As opções são v8_opcode , translated e decompiled . Várias opções podem ser combinadas (opcional, padrão: decompiled ).Para descompilar um arquivo V8 ByteCode e exportar o código descompilado:
python view8.py input_file output_file Por padrão, view8 detecta a versão V8 bytecode do arquivo de entrada (usando VersionDetector.exe ) e procura automaticamente um binário de desmontagem compatível na pasta Bin . Isso pode ser alterado especificando um binário desmontador diferente, use a opção --path (ou -p ):
python view8.py input_file output_file --path /path/to/disassembler Para pular o processo de desmontagem e fornecer um arquivo já desmontado como entrada, use o sinalizador --disassembled (ou -d ):
python view8.py input_file output_file --disassembled Especifique os formatos de exportação usando a opção --export_format (ou -e ). Você pode combinar vários formatos:
v8_opcodetranslateddecompiledPor exemplo, para exportar os códigos de operações V8 e o código descompilado lado a lado:
python view8.py input_file output_file -e v8_opcode decompiled Por padrão, o formato usado é decompiled .
A versão V8 bytecode é armazenada como um hash no início do arquivo. Abaixo estão as opções disponíveis para VersionDetector.exe :
-h : recupera uma versão e retorna seu hash.-d : Recupera um hash (Little-Endian) e retorna sua versão correspondente usando força bruta.-f : recupera um arquivo e retorna sua versão.