Можно ли из скомпилированного файла сделать исходники
В состав Visual C++ включен компилятор языка C, позволяющий создавать как простые консольные программы, так и классические приложения Windows, мобильные приложения и многое другое.
В этом пошаговом руководстве показано, как создать простейшую программу на языке C в стиле "Hello, World" в текстовом редакторе с последующей компиляцией из командной строки. Если вы предпочитаете работать с C++ в командной строке, см. статью Пошаговое руководство. Компиляция собственной программы на языке C++ из командной строки. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо командной строки, см. статью Пошаговое руководство. Работа с проектами и решениями (C++) или Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++.
Открытие командной строки разработчика в Visual Studio 2017
Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите элемент Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.
Декомпиляция APK в проект Unity
bad enclosing method attribute for class
Возможно ли кастомизировать web-интерфейс роутера?
Скачал бинарный файл прошивки роутера. Хотелось бы изменить цвет текста и фон в web-конфигураторе. Скачал HEX редактор и ничего там не понял. Сколько бы я не бился декодировать 16-ричную систему в .
Можно ли восстановить файлы .java из jar-ника?
Следующие шаги
Этот пример Hello, World является самой простой программой C. Реальные программы выполняют полезные действия и имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.
Вы можете использовать шаги, описанные в этом пошаговом руководстве для C, для создания собственного кода, чтобы не вводить приведенный пример. Вы также можете выполнить сборку различных примеров кода на C, которые можно найти в других местах. Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:
cl file1.c file2.c file3.c
Компилятор выдает программу с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:
cl file1.c file2.c file3.c /link /out:program1.exe
Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:
cl /W4 file1.c file2.c file3.c /link /out:program1.exe
Компилятор cl.exe имеет множество других параметров, которые можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах компилятора и компоновщика и использовании см. в разделе Справочник по построению C/C++.
Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile либо MSBuild и файлы проекта. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE и MSBuild.
Языки C и C++ похожи, но имеют различия. Компилятор Microsoft C/C++ (MSVC) использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает все файлы с расширением .c как исходные коды на языке С, а файлы с расширением .cpp как исходные коды на языке С++. Если указан параметр компилятора /TC, компилятор будет рассматривать все файлы как исходные коды на языке С вне зависимости от расширения.
Компилятор MSVC совместим со стандартами ANSI C89 и ISO C99, но не полностью. В большинстве случаев переносимый код на языке C будет компилироваться и выполняться должным образом. Компилятор обеспечивает дополнительную поддержку изменений в ISO C11/C17. Чтобы выполнить компиляцию с поддержкой C11/C17, используйте флаг компилятора /std:c11 или /std:c17 . Для поддержки C11 и C17 требуется Windows SDK 10.0.20201.0 или более поздняя версия. Рекомендуется использовать Windows SDK 10.0.22000.0 или более позднюю версию. Последнюю версию пакета можно скачать на странице Windows SDK. Дополнительные сведения и инструкции по установке и использованию этого пакета SDK для разработки на языке C см. в статье Установка поддержки C11 и C17 в Visual Studio.
Некоторые функции библиотеки и имена функций POSIX являются нерекомендуемыми в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.
Завтра иду на олимпиаду по программированию, писать буду на С++, так что 90%, что придётся делать это в VS 2010/08. Задания, скорее всего, будут такие, что будут решаться в пределах одного .срр файла, да и, скорее всего, будут требовать, чтоб вся программа была в 1 файле, но пока я нашёл только, как в VS создать целый консольный проект, но там вдобавок создаются хэдеры, которые потом уже включаются в .срр файл.
Лень каждый раз всё это чистить, чтоб оставить чистый .срр файл, нашёл, как отдельно создать файл, но не нашёл, как его отдельно скомпилировать.
Можно ли просто создать пустой проект и добавить в него один .срр файл или же просто создать и скомпилировать отдельный файл без проекта? Ну и, естественно, как это сделать?
насколько я знаю, самый минимум это создание пустого консольного приложения и добавление в него спп файла через solution explorer
без проекта скомпилировать не получится никак
Спасибо. Действительно, надо было перейти в диспетчер решений, там как раз уже можно добавить в проект именно пустой файл =)
Создал, а как добавить? При нажатии ПКМ по проекту и выбирании "Добавить" предлагает только добавить класс или ресурс
Для Visual C++
Нажать Ctrl + Shift + N и далее выбирать Пустые проекты. Если нужен проект Console application, то выбрать Консольное приложение Win32 задать ему имя Далее - Параметры приложений, убираете галочку с Предварительно скомпилированный заголовок и ставите напротив Пустой проект и жмёте на Готово. В Обозревателе решений выбираете директорию - Файлы исходного кода и щёлкаете на ней правой кнопкой мыши и наводите курсор мыши на Добавить, откроется контекст, в котором в зависимости от того, что вам нужно вы можете добавить Существующий элемент (Sift + Alt + A), при этом он к этому времени уже должен находится в папке с именем вашего проекта. Либо создать элемент.. . (Ctrl + Shift + A), там выбрать Файл С++ (.cpp) и задайте ему имя. Всё!
Желаю победы!
;-)
Руководство по использованию метки декомпиляция отсутствует.
- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
Какой язык программирования труднее всего декомпилировать?
Есть небольшой скрипт на cmd. Необходимо его как можно лучше скрыть его от посторонних глаз. Если перенести его на java, то как я понимаю очень просто потом будет заинтересованным лицам используя JAD, .
Только мой код
Параметры режима Только мой код (JMC) позволяют Visual Studio выполнять шаг с обходом системы, платформы, библиотеки и других вызовов непользовательского кода. Во время сеанса отладки в окне Модули отображаются модули кода, которые отладчик воспринимает как "Мой код" (т. е. пользовательский код).
При декомпиляции оптимизированных модулей или модулей выпуска создается непользовательский код. Если отладчик прерывается в декомпилированном непользовательском коде, появляется окно Отсутствует источник. Чтобы отключить режим "Только мой код", перейдите в раздел Инструменты > Параметры (или Отладка > Параметры) > Отладка > Общие и снимите флажок Включить только мой код. .
Декомпилятор для С++
Я учусь С++ и тут узнал, что существуют декомпиляторы. Я читал, что невозможно обратно получить исходный код из откомпилированной программы на С++. Это так? Если да, то можно ли сделать так, чтобы это .
Известные ограничения
Ограничения декомпиляции
Открытие командной строки разработчика в Visual Studio 2015
Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.
Если вы используете другую версию Windows, найдите в меню "Пуск" или на начальной странице папку средств Visual Studio, содержащую ярлык командной строки разработчика. Можно также ввести "командная строка разработчика" в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.
Затем убедитесь в том, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl (или CL не имеет значения для имени компилятора, но имеет значение для параметров компилятора). Результат должен выглядеть следующим образом.
В зависимости от установленной версии Visual C++ и обновлений текущий каталог или номера версий могут отличаться. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.
В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.
Отладка оптимизированных сборок или сборок выпуска
При отладке кода, декомпилированного из сборки, которая была скомпилирована с использованием оптимизаций компилятора, вы можете столкнуться со следующими проблемами:
- точки останова могут не всегда быть привязаны к соответствующим исходным расположениям;
- при пошаговом выполнении шаг может не всегда переходить в правильное место;
- имена локальных переменных могут быть неточными;
- некоторые переменные могут быть недоступны для оценки.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Помогите "разложить на атомы" exe - файл!
Встроенная поддержка языков
Открытие командной строки разработчика в Visual Studio 2022
Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите элемент Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.
Ограничения при работе с асинхронным кодом
Результаты декомпиляции модулей с шаблонами кода async/await могут быть неполными или неудачными в целом. Шаблоны кода async/await и машины состояния yield state-machine в ILSpy реализованы только частично.
Дополнительные сведения можно найти в описании проблемы GitHub Состояние генератора PDB.
Создание и внедрение исходного кода для сборки
После выравнивания apk требуется подпись
После декомпиляции, сборки обратно, подписи и выравнивания с помощью zipalign. Командой zipalign -v 4
Исходный код не найден
Создание файла исходного кода на языке C и его компиляция из командной строки
В окне командной строки разработчика введите команду cd c:\ , чтобы изменить текущий рабочий каталог на корень диска C:. Затем введите md c:\hello , чтобы создать каталог, и введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге будут находиться исходный файл и скомпилированная программа.
В командной строке разработчика введите команду notepad hello.c . В появившемся диалоговом окне блокнота с оповещением выберите Да, чтобы создать файл hello.c в рабочей папке.
В окне блокнота введите следующие строки кода:
В строке меню блокнота выберите Файл>Сохранить, чтобы сохранить файл hello.c в рабочей папке.
Вернитесь к окну командной строки разработчика. Введите dir в командной строке, чтобы получить список содержимого каталога c:\hello . Вы увидите исходный файл hello.c в списке каталогов, который выглядит примерно так:
Даты и некоторые другие данные будут отличаться на вашем компьютере. Если вы не видите файл исходного кода hello.c , убедитесь в том, что вы открыли созданный каталог c:\hello и сохранили исходный файл в нем в блокноте. Также убедитесь, что исходный код был сохранен с расширением имени файла .c , а не .txt .
Чтобы скомпилировать программу, в командной строке разработчика введите cl hello.c .
Имя исполняемой программы (hello.exe) отображается в информации, выводимой компилятором.
Чтобы запустить программу, в командной строке введите hello .
Программа выводит следующий текст и затем закрывается:
Поздравляем! Вы скомпилировали и запустили программу на C с помощью командной строки.
Как декомпилировать код android игры написанной на unity
Есть игра на unity, но в ней нет файла /assets/bin/data/managed/Assembly-CSharp.dll и других dll Игра точно на unity потому что заставка unity и папка /assets/bin/data/ есть. В папке managed только .
Декомпиляция программы С++ [дубликат]
Как мне получить код из exe`шника который написан на С++? Если возможно, то как? А если нельзя, то почему?
Открытие командной строки разработчика в Visual Studio 2019
Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите элемент Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.
Извлечение и просмотр внедренного исходного кода
Исходные файлы, внедренные в файл символов, можно извлечь с помощью команды Извлечь исходный код в контекстном меню окна Модули.
Извлеченные исходные файлы добавляются в решение как прочие файлы. В Visual Studio функция "Прочие файлы" по умолчанию отключена. Чтобы включить эту функцию, установите флажок Инструменты > Параметры > Среда > Документы > Показывать прочие файлы в Обозревателе решений. Без включения этой функции вы не сможете открыть извлеченный исходный код.
Извлеченные исходные файлы отображаются в разделе прочих файлов в Обозревателе решений.
Создание исходного кода
Декомпиляция приложения apk kotlin
После декомпиляции и последующей сборки обратно в apk приложение не открывается на 11 андройде. Использовалась последняя версия apktool (v2.5.0) Алгоритм: apktool d test.apk // Внесение правок (цвет .
Предварительные требования
Для выполнения этого пошагового руководства необходимо установить Visual Studio и дополнительные компоненты Visual C++ или Build Tools для Visual Studio.
Visual Studio — это эффективная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих компонентах, а также о скачивании и установке Visual Studio, включая бесплатный выпуск Visual Studio Community, см. в этой статье.
При использовании версии Build Tools для Visual Studio устанавливаются только программы командной строки, библиотеки и компиляторы, необходимые для сборки программ на C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только набор программ командной строки, скачайте Build Tools для Visual Studio на странице скачивания Visual Studio, а затем запустите установщик. В установщике Visual Studio выберите рабочую нагрузку Средства сборки C++ и щелкните Установить.
Прежде чем можно будет выполнить сборку программы C или C++ в командной строке, необходимо убедиться в том, что эти средства установлены и к ним можно получить доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска используемых средств, заголовков и библиотек. Visual C++ нельзя использовать в простом окне командной строки без предварительной подготовки. Вам понадобится окно командной строки разработчика, являющееся обычным окном командной строки, в котором заданы все необходимые переменные среды. К счастью, Visual C++ устанавливает ярлыки для запуска командной строки разработчика, для которой настроена среда для сборок из командной строки. К сожалению, имена ярлыков командной строки разработчика и места их расположения отличаются практически во всех версиях Visual C++ и в различных версиях Windows. Первая задача пошагового руководства — найти нужный ярлык.
Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Если вы не используете ни один из ярлыков, эти значения среды необходимо задать самостоятельно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Так как настраивать среду разработки сложно, настоятельно рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.
Инструкции отличаются в зависимости от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
Требуется режим прерывания выполнения
Создание исходного кода с помощью декомпиляции возможно только в том случае, если отладчик находится в режиме прерывания выполнения и приложение приостановлено. Например, Visual Studio переходит в режим прерывания, попадая в точку останова или в исключение. Вы можете легко активировать прерывание выполнения Visual Studio при следующем запуске кода с помощью команды Прервать все ().
Символы не загружены
Надежность декомпиляции
Относительно небольшой процент попыток декомпиляции может привести к сбою. Это происходит из-за ошибки пустой ссылки точки последовательности в ILSpy. Мы устранили этот сбой путем перехвата таких проблем и корректного завершения попытки декомпиляции.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Как декомпилировать языки программирования для изучения? Представление LLVM IR хороший выбор под эту цель? [закрыт]
Решил впервые изучать язык низкого уровня, выбор пал на RUST. Читая книгу "The Rust Programming Language" испытываю неудовлетворение от того что хотел бы получать более обширные сведения о .
Использование поставщика кода CodeDOM для создания исходного кода
Чтобы создать исходный код на конкретном языке, необходим граф CodeDOM, представляющий структуру создаваемого исходного кода.
В следующем примере демонстрируется создание экземпляра CSharpCodeProvider.
Граф для создания кода, как правило, содержится в CodeCompileUnit. Чтобы создать код для CodeCompileUnit , содержащего граф CodeDOM, вызовите метод поставщика кода. Этот метод имеет параметр для TextWriter , который используется для создания исходного кода, поэтому иногда необходимо сначала создать TextWriter , в который можно выполнить запись. В следующем примере демонстрируется генерация кода из CodeCompileUnit и запись созданного исходного кода в файл с именем HelloWorld.cs.
Возможно ли достать из EXE-шника исходный код?
Как все же посмотреть а если нужно то корректировать исходник программы? Ну к примеру я написал на Python прогу которая выключает комп, таймер грубо говоря, и смогу ли я изменить исходник как-нибудь?
Извлеченный исходный код
Исходный код, извлеченный из сборки, имеет следующие ограничения.
- Имена и расположение созданных файлов нельзя настроить.
- Файлы являются временными и будут удалены Visual Studio.
- Файлы помещаются в одну папку без использования какой-либо иерархии, которая была в оригинальных исходных файлах.
- Имя каждого файла содержит хэш контрольной суммы файла.
Использование поставщика кода CodeDOM для компиляции сборок
Вызов процесса компиляции
Чтобы скомпилировать сборку, используя поставщик CodeDom, необходимо иметь либо исходный код для компиляции на языке, для которого есть компилятор, либо граф CodeDOM, из которого может быть создан исходный код для компиляции.
При компиляции из графа CodeDOM передайте объект CodeCompileUnit, содержащий граф, в метод CompileAssemblyFromDom поставщика кода. Если имеется файл исходного кода на языке, который понимает компилятор, передайте имя файла, содержащего исходный код, в метод CompileAssemblyFromFile поставщика CodeDom. Также можно передать строку, содержащую исходный код на языке, воспринимаемом компилятором, в метод CompileAssemblyFromSource поставщика CodeDom.
Настройка параметров компиляции
Все стандартные методы вызова компиляции поставщика CodeDom имеют параметр типа CompilerParameters, который указывает параметры, используемые для компиляции.
Можно указать имя файла для выходной сборки в OutputAssembly свойстве объекта OutputAssembly. В противном случае будет использоваться имя выходного файла по умолчанию.
По умолчанию новый CompilerParameters инициализируется со свойством, имеющим значение false. При компиляции исполняемой программы необходимо установить значение свойства GenerateExecutable равным true. Если GenerateExecutable имеет значение false, компилятор создаст библиотеку классов.
При компиляции исполняемой программы из графа CodeDOM следует определить в графе объект CodeEntryPointMethod. Если имеется несколько точек входа в код, может потребоваться задать MainClass для свойства MainClass имя класса, определяющего используемую точку входа.
Чтобы включить отладочную информацию в созданный исполняемый файл, задайте IncludeDebugInformation для свойства IncludeDebugInformation.
Если проект ссылается на какие-либо сборки, необходимо указать имена сборок как элементы в StringCollection качестве ReferencedAssemblies свойств StringCollection , используемого при вызове компиляции.
Сборку, которая записывается в память, а не на диск, можно скомпилировать, задав GenerateInMemory для свойства GenerateInMemory. При создании сборки в памяти код может получить ссылку на создаваемую сборку из свойства CompiledAssembly объекта CompilerResults. Если сборка записывается на диск, можно получить путь к созданной сборке из PathToAssembly свойства PathToAssembly.
Чтобы указать пользовательскую строку аргументов командной строки, которую следует использовать при вызове процесса компиляции, задайте строку в свойстве CompilerOptions.
Если для вызова процесса компилятора требуется маркер безопасности Win32, задайте этот маркер в свойстве UserToken.
Чтобы сделать ссылку на исходный файл Win32 в скомпилированной сборке, укажите имя исходного файла Win32 в свойстве Win32Resource.
Чтобы указать уровень предупреждения, на котором следует прекратить компиляцию, задайте свойство WarningLevel как целое число, представляющее уровень предупреждения для прекращения компиляции. Можно также настроить компилятор на остановку компиляции при обнаружении предупреждений, задав TreatWarningsAsErrors для свойства TreatWarningsAsErrors.
В следующем примере кода демонстрируется компиляция исходного файла с помощью поставщика CodeDom, производного от класса CodeDomProvider.
Читайте также: