Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
View8 — Декомпилирует сериализованный байт-код V8 (файлы JSC) в высокоуровневый читаемый код, похожий на JavaScript, с поддержкой нескольких версий V8, древовидного вывода и детерминированных имён функций для анализа вредоносного ПО. | Kitploit
Инструменты/GitHubGitHub/suleram/view8
Статический анализАнализ уязвимостейОбратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubsuleram/view8

View8

Декомпилирует сериализованный байт-код V8 (файлы JSC) в высокоуровневый читаемый код, похожий на JavaScript, с поддержкой нескольких версий V8, древовидного вывода и детерминированных имён функций для анализа вредоносного ПО.

Репозиторий
38460872 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

View8

View8 — это инструмент статического анализа, предназначенный для декомпиляции сериализованных объектов байт-кода V8 (файлов JSC) в высокоуровневый читаемый код. Для разбора и дизассемблирования этих сериализованных объектов View8 использует пропатченный скомпилированный бинарный файл V8. В результате View8 создаёт текстовый вывод, похожий на JavaScript.

Требования

  • Python 3.x
  • Бинарный файл дизассемблера. Доступные версии:
    • Версия V8 9.4.146.24 (используется в Node V16.x)
    • Версия V8 10.2.154.26 (используется в Node V18.x)
    • Версия V8 11.3.244.8 (используется в Node V20.x)

Скомпилированные версии доступны на странице релизов.

Использование

Аргументы командной строки

  • --inp, -i: Имя входного файла.
  • --out, -o: Путь к выходному файлу. В зависимости от выбранных опций вывод может представлять собой один файл или дерево каталогов.
  • --input_format, -f: Укажите формат входных данных. Варианты:
    • raw: входные данные — это необработанный файл JSC.
    • disassembled: входной файл уже дизассемблирован.
    • serialized: входные данные уже декомпилированы и сохранены в сериализованном формате. Текущий сериализованный формат — Python pickle; используйте только доверенные входные данные.
  • --export_format, -e: Укажите формат(ы) экспорта. Варианты: v8_opcode, translated, decompiled и serialized. Можно комбинировать несколько вариантов. По умолчанию: decompiled.
  • --path, -p: Путь к бинарному файлу дизассемблера. Требуется, если входные данные имеют необработанный формат и View8 не может автоматически найти подходящий дизассемблер.
  • --scope: Распространять аргументы области видимости. По умолчанию: 1.
  • --normalize: Заменить идентификаторы функций, производные от адресов, детерминированными именами на основе порядка разбора.
  • --normalize-map [CSV]: При использовании --normalize записать CSV-файл с сопоставлением каждого исходного имени функции с её нормализованным именем. Если путь опущен, View8 формирует <output>.name_map.csv из --out или из --inp, если путь вывода не задан.
  • --tree, -t: Разделить вывод на структуру дерева вместо хранения всех функций в одном файле. Укажите функцию, которая будет использоваться как корень дерева. Чтобы начать с основной функции по умолчанию, используйте start.
  • --split_mode: Режим разделения дерева. Варианты: declarers, calls и references. По умолчанию: declarers.
  • --inline_depth, -d: В режимах calls и references включает функции, достижимые из выбранного корня дерева, на глубину до N в главный файл дерева. Глубина 0 означает только выбранный корень; глубина 1 включает прямые вызовы/ссылки; глубина 2 включает их дочерние элементы. Не используется с declarers.
  • --inline_branch_limit, -l: В режиме дерева включает полные дочерние ветви, содержащие не более N функций, в главный файл дерева, когда дочерние ветви включены параметром --inline_depth. Более крупные ветви сохраняются отдельно.
  • --split_depth: В режимах calls и references ограничивает глубину обхода экспортируемых ветвей использования. По умолчанию: 4.
  • --include, -n: Файл, содержащий функции для включения в вывод.
  • --exclude, -x: Файл, содержащий функции для исключения из вывода.
  • --func: Отобразить выбранную функцию.
  • --show_all: В режиме отображения функции также показывать строки, помеченные как скрытые.
  • --verbosity, -v: Уровень подробности вывода. Допустимый диапазон: от 0 до 3.

Базовое использование

Чтобы декомпилировать файл байт-кода V8 и экспортировать декомпилированный код:

python view8.py -i input_file -o output_file

Путь к дизассемблеру

По умолчанию View8 определяет версию байт-кода V8 входного файла с помощью VersionDetector.exe и автоматически ищет совместимый бинарный файл дизассемблера в папке Bin. Это можно изменить, указав другой бинарный файл дизассемблера с помощью опции --path или -p:

python view8.py -i input_file -o output_file --path /path/to/disassembler

Обработка дизассемблированных файлов

Чтобы пропустить процесс дизассемблирования и передать уже дизассемблированный файл в качестве входных данных, используйте опцию --input_format disassembled или -f disassembled:

python view8.py -i input_file -o output_file -f disassembled

Детерминированные имена функций и CSV-файл сопоставления

Используйте --normalize, чтобы заменить имена функций, производные от адресов, детерминированными идентификаторами. Чтобы сохранить связь между исходными и нормализованными именами, добавьте --normalize-map:

python view8.py \
  --input_format disassembled \
  --inp sample.jsc.disasm.txt \
  --normalize \
  --normalize-map \
  --out decompiled/sample.dec.txt \
  --export_format decompiled serialized

Это создаст файл decompiled/sample.dec.name_map.csv со следующими столбцами:

original_name,normalized_name
func_start_0x268514e9dcd9,func_start_0x100000000
func_rne_0x268514eb0779,func_rne_0x100000001

Также можно указать явный путь к CSV-файлу:

python view8.py \
  --input_format disassembled \
  --inp sample.jsc.disasm.txt \
  --normalize \
  --normalize-map mappings/sample.names.csv \
  --out decompiled/sample.dec.txt

Создание и обработка сериализованных файлов

Иногда полезно декомпилировать файл в сериализованный формат, который сохраняет разобранные объекты и структуры. Такой тип вывода может быть проще для постобработки, чем текстовый формат, например, при дальнейшей деобфускации. Чтобы создать сериализованный вывод, используйте формат экспорта serialized:

python view8.py -i input_file -o output_file -e serialized

Предупреждение о безопасности: текущий сериализованный формат — это файл Python pickle (.pkl). Распаковка данных из ненадёжных источников может выполнить произвольный код. Загружайте только те сериализованные файлы, которые вы создали сами.

Чтобы загрузить сериализованный вывод обратно и экспортировать его в другом формате, используйте --input_format serialized или -f serialized:

python view8.py -i input_file -o output_file -f serialized

Форматы экспорта

Укажите формат(ы) экспорта с помощью опции --export_format или -e. Можно комбинировать несколько форматов:

  • v8_opcode
  • translated
  • decompiled
  • serialized
Скачать инструмент