Подтвердить что ты не робот

Как извлечь исходный код C из .so файла?

Я работаю над ранее разработанным программным обеспечением, а исходный код скомпилирован как linux shared libraries (.so), а исходный код отсутствует. Есть ли какой-либо инструмент, который может извлечь исходный код из общих библиотек Linux?

Спасибо, Ravi

4b9b3361

Ответ 1

Нет. Как только вы скомпилируете свой код, в его двоичном коде нет следа, а только машинного кода.

Некоторые могут упоминать декомпиляторы, но те, которые не извлекают источник, анализируют исполняемый файл и производят некоторый источник, который должен иметь тот же эффект, что и оригинал.

Ответ 2

Вы можете попробовать разобрать код объекта и получить мнемонику машинного кода.

objdump -D --disassembler-options intel sjt.o, чтобы получить сборку синтаксиса Intel

objdump -D --disassembler-options att sjt.o или objdump -D sjt.o, чтобы получить синтаксис AT & T

Но исходный исходный код никогда не был найден. Вы можете попытаться изменить процесс, изучив и восстановив разделы. Это будет боль в аду.

Ответ 3

Отказ от ответственности: я работаю в Hex-Rays SA.

Декомпилятор Hex-Rays - единственный коммерчески доступный декомпилятор, который я знаю, который хорошо работает с реальным x86 и ARM-кодом. Это правда, что вы не получаете исходный источник, но получаете то, что эквивалентно ему. Если вы не разделили свой двоичный файл, вы даже можете получить имена функций или, с некоторой удачей, даже типы и локальные переменные. Однако, даже если у вас нет информации о символах, вам не нужно придерживаться первого раунда декомпиляции. Декомпилятор Hex-Rays является интерактивным - вы можете переименовывать любую переменную или функцию, изменять типы переменных, создавать типы структуры для представления структур в исходном коде, добавлять комментарии и т.д. С небольшой работой вы можете многое восстановить. И довольно часто то, что вам нужно, это не весь исходный файл, а какой-то критический алгоритм или функция - и эти Hex-Rays обычно могут предоставить вам.

Посмотрите демо видео и сравнение страницы. Все еще думаешь, что "смотреть на сборку" - это одно и то же?

Ответ 4

Нет. В общем, это невозможно. Источник не упакован в скомпилированные объекты или библиотеки.

Ответ 5

Вы не можете. Но вы можете открыть его как архив в 7-Zip. Вы можете видеть тип и размер файла каждого файла отдельно. Вы можете заменить файлы в нем своими пользовательскими файлами.