Обратное проектирование Perl-скрипта на основе дампа ядра

Сервер друга (да, правда. Не мой.) Был взломан, и мы обнаружили двоичный файл perl, на котором запущен некоторый код бота . Нам не удалось найти сам скрипт (вероятно, оцененный как полученный по сети), но нам удалось создать дамп ядра процесса perl.

Запуск строк в ядре дал нам некоторые подсказки (имена хостов, имена пользователей / пароли), но не исходный код скрипта.

Мы хотели бы знать, на что способен скрипт, поэтому мы мне нравится перепроектировать код Perl, который выполнялся внутри этого интерпретатора perl.

Обыскав, я обнаружил, что ближе всего к декомпилятору perl является модуль B :: Deparse, который, кажется, идеально подходит для преобразования байт-кода деревьев синтаксического анализа обратно в читаемый код.

Как мне заставить B :: Deparse работать с дампом ядра? Или, как вариант, как я могу перезапустить программу из ядра, загрузить B :: Deparse и запустить ее?

Любые идеи приветствуются.

11
задан otmar 26 August 2010 в 15:33
поделиться

2 ответа

Ну, undump превратит этот дамп ядра обратно в двоичный исполняемый файл (если вы сможете найти рабочую версию). Затем вы сможете загрузить это в perl и -MO=Deparse.

0
ответ дан 3 December 2019 в 10:24
поделиться

Я сомневаюсь, что есть инструмент, который делает это из коробки, так что...

  1. Найдите исходный код версии perl, которую вы использовали. Это должно помочь вам понять структуру памяти интерпретатора perl. Это также поможет вам выяснить, есть ли здесь способ сократить путь (например, если байт-коду предшествует легко находимый заголовок в памяти или что-то в этом роде).

  2. Загрузите двоичный файл + дамп ядра в отладчик, возможно, gdb

  3. Используйте информацию в исходном коде Perl, чтобы убедить отладчик выдать интересующий вас байт-код.

После того, как вы есть байт-код, B::Deparse должен помочь вам получить что-то более читабельное.

2
ответ дан 3 December 2019 в 10:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: