Я знаю, что вы не можете иметь C ++ dll и ожидаете иметь его в качестве исходного кода, я прав? Но в то же время, когда я возвращаю C ++ dll к необработанным данным, используя DUMPBIN, есть некоторые вещи, которые можно сделать, чтобы интерпретировать это, верно? Например, мы знаем основные сопоставления для большинства популярных операторов и все.
Существует ли инструмент, который может приблизительно интерпретировать эти необработанные машинные данные в нечто большее, чем код или инструкция? Проблема в том, что мне не хватает времени, чтобы самому написать это, чтобы почесать! поэтому я ищу инструмент или что-то для этого.
Тебе необходимо дизассемблер, это инструмент, который принимает двоичный объект (например, скомпилированный файл, библиотеку или даже исполняемый файл) и пытается переосмыслить его содержимое как сборку.
С помощью такого инструмента вы обычно можете получить имена внутренних символов (если, конечно, двоичное изображение не вырезано, но это не относится к динамически любимым библиотекам).
Также для C ++ это немного сложно из-за названия коверкание.
Попробуй взглянуть на Objdump.
Вы можете разобрать разделы кода DUMPBIN / DISASS — но если вам нужен «код», такой как C ++, вам нужен декомпилятор. Однако они далеки от совершенства и часто создают довольно нечитаемый код — да, это то, что вы можете вставить в компилятор, но вряд ли это то, что я бы назвал «читабельным для человека».
По моему предвзятому мнению, лучший дизассемблер — IDA (Интерактивный дизассемблер). Это несколько дорого, так как оно предназначено для профессионального использования, но есть бесплатная (более старая) версия, которую вы можете попробовать:
http://www.hex-rays.com/products/ida/support/download_freeware.shtml
Hex-Rays Decompiler (дополнение для IDA) может создать псевдокод C из разборки, который во многих случаях может быть перекомпилирован заново.