Как уже указывал Оли в своем ответе, вы не можете получить исходный исходный код исполняемого файла.
Во время компиляции исходного кода (компиляция, предназначенная как в типичном более широком принятии, следовательно, как весь процесс, который «преобразует» исходный код в исполняемый файл), теряется множество информации.
Препроцессор C, например, выполнит следующее (между прочим): [!d2 ] Интерпретировать, выполнить и удалить директивы препроцессора (#) Удалить комментарии Удалить ненужные пробелы
С другой стороны, то, что не потеряно во время компиляции исходного кода, технически обратимо к функциональный эквивалентный исходный код
Это происходит потому, что:
Интерпретировать, выполнить и удалить директивы препроцессора (#) Инструкции по сборке не имеют 1: 1 соответствие с инструкциями C; компиляция исходного кода C обычно представляет собой не просто преобразование инструкций C в инструкции по сборке на основе таблицы коррумпированности, на самом деле это часто противоположное; обычно инструкция C преобразуется в краткие (часто разные на основе компилятора) инструкции сборки; однако шаблоны нескольких команд сборки обычно идентифицируются и возвращаются к одной команде C;Существуют инструменты, называемые декомпиляторами, целью которых является попытка вернуть исполняемый файл функционально эквивалентному исходному коду; однако результат обычно является чем-то далеким от самого исходного исходного кода (и обычно также несовместимым);
Рассмотрим эту программу:
#include <stdio.h>
#define MESSAGE "Literal strings will be recovered" // This preprocessor directive won't be recovered
/*
This comment and the comment above won't be recovered
*/
int main(int argc, char* argv[]) {
printf(MESSAGE);
return 0;
}
. Скомпилировав ее в исполняемый файл и декомпилируя его в исходный код снова, это более или менее то, что вы обычно возвращаете (в этом конкретном случае я использовал gcc / Boomerang):
// address: 0x80483fb
int main(int argc, char **argv, char **envp) {
printf("Literal strings will be recovered");
return 0;
}
Как и было предсказано:
Инструкции по сборке не имеют коррумпированности 1: 1 с инструкциями C; компиляция исходного кода C обычно представляет собой не просто преобразование инструкций C в инструкции по сборке на основе таблицы коррумпированности, на самом деле это часто противоположное; обычно инструкция C преобразуется в краткие (часто разные на основе компилятора) инструкции сборки; однако, шаблоны нескольких инструкций сборки обычно идентифицируются и возвращаются к одной инструкции C. Удалить комментарии Отсутствуют ненужные пробелы (кроме новых строк и таблиц, которые были добавлены декомпилятором)Это также довольно хороший результат; не редко встречаются встроенные инструкции сборки в код:
asm("assembly_instruction");
__asm__("assembly_instruction");
Нижняя строка (как уже указывалось в других ответах): far *. [!d27 ]
* Однако, в зависимости от исполняемого файла и вашей удачи, вы можете получить что-то с помощью декомпилятора.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!
Я часто видел это после установки окон, что случилось, по техническим причинам, раздел Windows C был помещен в 1 Мб. Обычно это не имеет значения, кроме как в этом случае Linux знает, что у вас может быть только четыре раздела и что это то, что он показывает. Решение удалите 1 МБ-раздел, чтобы увеличить его, чтобы заполнить его на диск и перезагрузить.
Кажется, весь ваш жесткий диск выделен (если вы добавите все пространство, которое он составляет около 500 ГБ), в основном в sda3 и sda4. Я бы предположил, что раздел на самом деле отличается от того, что вы думаете. У меня были окна, полностью перезаписывающие мой жесткий диск, хотя я попросил сохранить существующие разделы!
Обязательно проверьте, что находится в 3 и 4 , возможно, использовать встроенное управление дисками Windows для ссылки. Другой вариант - использовать диск Ubuntu Live и загрузиться в ОС Linux, чтобы snoop вокруг.
Обязательно создайте резервную копию !!!