В любом случае, чтобы получить статически связанные функции, содержащиеся в .exe и использовать их повторно? - PullRequest
3 голосов
/ 31 августа 2011

Например:

Скажем, я связал myprogram.obj с myprogram.lib, чтобы сделать myprogam.exe

Если myprogram.lib содержит все виды специальных функций, содержащихся в нем, и яслучайно удалил его (и источник), есть ли способ, которым я мог бы покопаться в myprogram.exe и получить функции?Или, может быть, даже просто конвертировать myprogram.exe в .lib файл как-то и ссылаться только на те его части, которые мне нужны?

Ответы [ 3 ]

0 голосов
/ 31 августа 2011

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

0 голосов
/ 03 сентября 2011

Функции там. Если исполняемый файл не зашифрован или иным образом не может быть дизассемблирован с прямым кодом ассемблера (exepackers, шифрование, ключи), вы можете найти функции.

Но их наименования, точные границы и другие аннотации исчезли, что затрудняет автоматизацию, так как больше нет ничего, чтобы идентифицировать функции.

Другими словами, это что-то для мастера ассемблера или для профессиональных сервисов реверс-инжиниринга.

Если ваш код очень полезен, а компилятор относительно распространен, существуют службы обратного инжиниринга, которые могут сделать это за вас. Но будьте готовы к огромной цене. Даже просто анализ того, как легко это будет, может быть дорогим. (*)

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

(*) RTTI или внутренняя отладочная информация могут упростить процесс.

0 голосов
/ 31 августа 2011

Так вот в чем дело.Вы, вероятно, можете «декомпилировать» свой исполняемый файл.Это боль.Но если вам нужна вся информация по этому вопросу, посмотрите на этот ранее ТАК вопрос.

...