Можно ли воссоздать заголовочные файлы C ++, необходимые для использования заданного .dll / .so / .dylib? - PullRequest
2 голосов
/ 09 августа 2010

Возможно ли воссоздать заголовочные файлы C ++, необходимые для использования заданного .dll / .so / .dylib?

Если это так, как можно поступить так?

Ответы [ 3 ]

2 голосов
/ 09 августа 2010

В общем, нет.В заголовочных файлах содержится много информации (структурные схемы, числовые константы и т. Д.), Которые недоступны в динамической библиотеке.

Вы можете быть в состоянии восстановить некоторую информацию о параметрах функции, еслибиблиотека экспортирует «оформленные» имена функций C ++.Однако даже при этом вы не сможете получить достаточно информации, чтобы восстановить полезный заголовочный файл.

Если библиотека экспортирует недекорированные имена (с extern "C"), то вы в значительной степени внеудачи.Все, что вы знаете в этот момент, это имена функций.

1 голос
/ 09 августа 2010

Это называется обратным инжинирингом, и само по себе это не простая задача, получение имен и параметров функций легко из-за искажения имен в C ++, но восстановление других данных, таких как перечисления, константы и #defines, используемые библиотекой, может быть немного боли, потому что эти данные будут встроены в сборку библиотеки.

0 голосов
/ 18 января 2012

Чтобы расширить ответ Матиаса, обратный инжиниринг требует нескольких различных тем знаний.Для начала, по крайней мере, базовая сборка является обязательным.Вам нужно будет учиться все больше и больше в зависимости от сложности того, что вы делаете, но, по крайней мере, понимать основы языка.Второе - это отладка.Существуют различные инструменты, которые могут вам помочь, вероятно, наиболее заметным в Windows является OllyDBG, в Linux мне нравится EDB или отладчик Эвана.Последнее, что вам нужно, это хороший дизассемблер, такой как IDA Pro (дорогой, но я считаю, что есть бесплатная версия).Есть много книг и онлайн-ресурсов, чтобы узнать об обратном инжиниринге, если вы действительно заинтересованы в этом.Удачи!

...