Декомпиляция.pyd, который содержит замороженные объекты Python

Я пытаюсь найти лучший способ декомпиляции файла Python.pyd. Куда бы я ни посмотрел, я захожу в тупик. Похоже, что нет программы для этого, за исключением "Антифриза" Аарона Портного и Али Ризви-Сантьяго, который был продемонстрирован в 2008 году здесь. Однако проект давно потерян и заброшен.

Я разговаривал с одним из разработчиков программы вчера в твиттере (Аарон Портной). Вот разговор.

Поэтому мой вопрос: как бы я легко декомпилировал.pyd, содержащий замороженные объекты python.

ИЛИ ЖЕ

Как бы я изменил один из декомпиляторов, которые делают это с.pyo и.pyc, чтобы декомпилировать.pyd, как указал Аарон? Кроме того, что было бы лучше всего пойти, если это то, что я в конечном итоге делаю?

ИЛИ ЖЕ

Если у вас есть антифриз или вы знаете, где его взять, это будет чудом. Даже разработчик не знает, где его взять. Я искал его в течение нескольких дней без удачи.

0 ответов

Я не видел этого до сих пор. Но должен заметить, что мы не "декомпилировали" его, а просто дизассемблировали.

Я почти уверен, что у меня есть компоненты нижнего уровня, которые составляют это на внешнем жестком диске. Хотя, я не уверен насчет того чертовски крутого пользовательского интерфейса (который их обертывает), который написал Аарон.

Но, по сути, это было сканирование .pyd для таблицы, которая была рядом с экспортом (или в нем), а затем с помощью marshal.loadsчтобы декодировать каждый объект из таблицы обратно в собственные объекты Python. Получив предметы, вы можете разобрать их, используяdis.disassemble функция от disмодуль. Однако у меня все еще есть оригинальный ассемблер / дизассемблер в одном из моих проектов на GitHub.

Чтобы вставить свои объекты обратно в таблицу, вы должны использовать marshal.dumps и просто запишите его обратно в файл.

Кроме того, с тех пор Python значительно изменился, поэтому некоторые вещи больше не актуальны. Но… кого-нибудь еще волнует это?

Другие вопросы по тегам