Как переделать приложение windows

Статья Как изменить код программы без исходника

Как изменить код программы, если потерян исходник

Бывают ситуации, когда под рукой нет исходника, а Вам срочно требуется внести изменения в коде, написанной ранее Вами программы. Например, дано приложение «TextEdit.exe» — текстовый редактор, написанный на языке c#, который имеет простой пользовательский интерфейс, состоящий из двух кнопок и текстового поля.

При нажатии на кнопку “Чтение” из файла 1.txt считываются и выводятся все строки в окно элемента управления textBox, а при нажатии на кнопку “Запись” данные из текстового поля сохраняются в файле 2.txt

Для хранения путей в программе используются две текстовых переменных: filePathIn и filePathOut

Прошёл год, как программа была написана и отдана заказчику, но вдруг ему потребовалось изменить имя папки, в которой должны храниться оба файла, c 123 на Text. Задача простая, но прошло уже много времени, и исходник был потерян, что делать в такой ситуации?

Для начала вспомним, как образуется .NET сборка

Полученный в результате компиляции файл (сборка) содержит внутри себя метаданные, манифест, код на языке IL (MSIL).

Метаданные — описывают типы данных и их члены

Манифест описывают саму сборку

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

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

Данный инструмент входит состав пакета .Net Framework SDK, который является бесплатным и устанавливается вместе с Visual Studio (включая Express версию). С помощью него вы можете, как просматривать внутреннее содержимое сборки, так и изменять его.

Для удобства работы создадим отдельную папку, например: ”c:\newasm” и поместим в неё файл TextEdit.exe

Затем в меню “Пуск” открываем папку: «Visual Studio Tools»

Запускаем командную строку разработчика

Откроется консоль, вводим первую команду: ildasm. Для выполнения команды нажмите клавишу Enter.

Появиться главное окно программы.

Переместим файл сборку TextEdit.exe в окно дизассемблера ILASM, в результате отобразиться её внутреннее содержимое.

Убедимся, что в ней содержатся нужные нам данные (пути к файлам).

Два поля на месте, теперь взглянем на метаданные.

Для доступа к метаданным Вы так же можно использовать сочетание горячих клавиш: Ctrl+M. Затем с помощью кнопки Find, найдём имя одного из файлов.

Как видно присутствуют оба. Пути найдены, и теперь их нужно изменить, но все данные, в текущий момент, доступны только для просмотра, и изменить их в самой дизассемблере нельзя, поэтому воспользуемся второй возможностью данной программы и выгрузим содержимое сборки в файл.

Выберите пункт меню File -> Dump

Появится меню. В данном примере, все пункты меню оставим без изменений и просто нажмём кнопку OK.

Появится диалоговое окно

Выберем ранее созданную папку “newasm”, затем укажем имя и тип файла и нажмём на кнопку “Сохранить”

Читайте также:  Linux mint восстановление системы с флешки

В результате в папке “newasm” должно появиться несколько новых файлов

Закрываем окно ildasm, а так же удаляем файл Textedit.exe, больше он нам не понадобиться. Теперь нас интересует полученный файл texted.il и для начала откроем его любым текстовым редактором, например блокнотом.

Снова воспользуемся поиском (Ctrl+F)

Так же видим найденные строки, которые содержат пути к файлам.

Изменим текущее имя папки 123 на новое название Text, для обоих файлов

Сохраняем внесённые изменения и закрываем блокнот.

Изменения внесены и теперь нужно преобразовать файл txted.il обратно в исполняемый файл (.exe) Для этого нам понабиться второй инструмент ILASM, ассемблер, который так же входит в состав пакета SDK и не требует отдельной установки.

Возвращаемся в консоль

Вводим вторую команду:

Первый параметр: /exe — указывает компилятору, что на выходе мы хотим получить файл с расширением .exe. Затем указываем файл, который содержит MSIL-код. С помощью второго параметра /output — указываем имя и расширение нового файла.

Если компиляции прошла успешно, то в окне консоли вы должны увидеть сообщение, которое выделено на картинке, а внутри папке “newasm” должен появиться новый файл TextEdit.exe, который теперь уже содержит новые пути к файлам.

Вот таким не сложным способом можно выйти из данной ситуации, при этом не имея исходника под рукой.

Вложения

The Codeby

  • Сообщения 4 354
  • Реакции 6 168

The Codeby

ООО Кодебай

Сергей
Четверг на 02:09
Здравствуйте, когда пытаюсь открыть файл exe в редакторе LD DASM у меня появляется ошибка «отсутствует допустимый заголовок CLR поэтому дизассемблирование невозможно» что это? и можно как нибудь исправить?

admin
Пятница на 10:09
Программа (файл) на каком языке написана?

Иван
Суббота на 10:09
Добрый день. Такая же ситуация. Пытаюсь открыть файл exe в редакторе LD DASM у меня появляется ошибка «отсутствует допустимый заголовок CLR поэтому дизассемблирование невозможно». Файл написан на Delphi.

admin
Воскресенье на 09:09
Привет.
Эта утилита предназначена только для просмотра кода написанного на языке IL (MSIL) — это промежуточный язык, в который компилируется код .NET языков. Полученный в результате компиляции файл (сборка) содержит CLR заголовок. Затем, во время запуска приложения, выполняется вторая компиляция, которая превращает полученный код IL в машинный.

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

Иван
Понедельник на 12:09
А как-то нормально можно посмотреть код, если есть уже окончательный exe и несколько dll проекта?

admin
Понедельник на 09:09 ПП
Что значит «нормально посмотреть код» ?

Иван
Среда на 03:09 ПП
Ну чтобы взять код себе в другой проект

admin
Четверг на 11:09
Есть вроде какие-то, но не помню названия, потому что не использую их.

Анатолий
Четверг на 12:02 ПП
Можете, помочь как я хочу переписать лаунчер для игры, что бы изменить проверку файлов но не могу никак открыть его. Пробывал через ресторатор 2007 но оно не может прочитать пату файлов точнее отобразить язык.

Переделать консольную программу в приложение Windows Forms

Я написала программу на консоли, но требуется еще ее сделать в WF.
Если Вы способны помочь мне с этим, пожалуйста — помогите
Если не сложно, то можно сделать еще и скрины

Читайте также:  Linux как включить подкачку

Описать структуру с именем MARSH, содержащую следующие поля:
• название начального пункта маршрута;
• название конечного пункта маршрута;
• номер маршрута.
Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH (записи должны быть упорядочены по номерам маршрутов);
• вывод на экран информации о маршруте, номер которого введен с клавиатуры (если таких маршрутов нет, вывести соответствующее сообщение)

Переделать консольное приложение в приложение Windows Forms
Дорогие друзья пожалуйста помогите в консольным приложением. У меня есть код, но он под консольное.

Переделать консольное приложение на Windows Forms
Переписать c С# на Windows Forms,сам не знаю:( using System; using System.Collections.Generic;.

Как переделать Windows Forms приложение в Windows Service с UI?
Здравствуйте, уважаемые посетители форума! Вопрос такой. У меня есть приложение C# Win Forms с.

Вроде все сделала, как вы писали. Только вот еще одна проблемка. в самом конце, я сделала метод, который будет выводить данные из массива.

как переделать эту часть, что бы, при прохождении вот этого условия:

Запускаем Windows-приложения на Android через CrossOver

Разработчики из студии CodeWeavers выпустили инструмент CrossOver, который сближает операционные системы и Windows. Теперь на компьютерах, планшетах и даже смартфонах с процессорами x86 по управлением ОС от Google можно запускать классические приложения Windows. Мы протестировали эту утилиту и составили свое небольшое мнение о ней в этой статье.

Содержание

Примечание: утилита CrossOver работает на устройствах под управлением Android и Chrome OS, которые обладают процессорами с архитектурой x86 — это чипы Intel или AMD. Поэтому на большинстве аппаратов с ARM-чипсетами запустить приложения от Windows не получится. Автор статьи тестировал CrossOver на ноутбуке ASUS с процессором AMD и операционной системой Remix OS последней версии.

Что такое CrossOver для Android

Разработчики из CodeWeavers известны тем, что они выпустили утилиты CrossOver для Linux и macOS для запуска на этих ОС приложений от Windows. Утилита CrossOver основана на ПО с открытым исходным кодом под названием Wine. По сути своей CrossOver и Wine — это инструмент для виртуализации, который создает эмулируемую среду Windows для запуска соответствующих приложений.

Эмуляция возможна только на процессорах x86. Чипсеты с архитектурой ARM не поддерживаются, так как код программ Windows не может выполняться на них, а простого конвертера до сих пор нет. Грубо говоря, CrossOver работает только на компьютерах с Chrome OS, а также на планшетах с Android, где в качестве процессора выступает Intel Atom, например — ASUS ZenFone.

Как установить CrossOver для Android

На данный момент утилита CrossOver проходит бета-тестирование в Google Play. Там вы можете записаться на тест программы, либо можно скачать установочный APK-файл утилиты напрямую с Трешбокса и установить на своем гаджете (определенные антивирусами угрозы — просто особенность приложения, связанная с эмуляцией).

На хромобуках установка более сложная. Необходимо сначала отправить Chrome OS в режим рекавери, там активировать режим разработчика, перейти на канал Developer — Unstable в самом браузере, а потом включить поддержку Android-приложений в настройках и скачать соответствующую программу из Play Store.

Читайте также:  Rosa linux ��� uefi

Установка и работа с приложениями

Запустив установленное приложение CrossOver, перед нами предстает что-то вроде виртуального рабочего стола Windows со своим меню «Пуск». На этом рабочем столе появятся все иконки установленных вами Windows-приложений. Программа лучше работает в полноэкранном режиме, но это касается только Remix OS и Chrome OS. Самый простой способ установить программу с Windows — воспользоваться внутренним установщиком. Разработчики решили упростить этот процесс, добавив собственный установщик. Нажимаем на надпись “Install Application” в верхнем правом углу. Откроется окно с текстовым полем, выпадающим списком и кнопкой “Install”.

Сразу же CrossOver предлагает установить Steam — каталог игр. Можно просто нажать кнопку “Install” и установка начнется. В выпадающем списке предлагаются другие приложения или игры от Windows, которые точно работают на Android. Если снять галочку с пункта “Only applications”, то в выпадающем списке будет огромное количество игр и приложений от Windows, которые устанавливаются одним кликом. Но будут ли они работать — не гарантируется.

В текстовом поле можно искать приложения или игры по названию. Вот так выглядит Steam после установки на Android:

Большинство игр из Steam не будут работать из-за того, что CrossOver поддерживает только DirectX 9, но разработчики утилиты обещают добавить поддержку версий 10 и 11. Некоторые люди, например, смогли запустить Half-Life и классический Team Fortress, но для этого пришлось отключить полноэкранный режим и активировать программный рендеринг вместо OpenGL:

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

Также вы можете установить браузер от Windows для интернет-серфинга в таком эмуляторе. Например, Firefox 45 устанавливается и работает без проблем. Даже расширения функционируют.

Есть возможность установить полноценный офисный пакет. Например — OpenOffice, LibreOffice или Microsoft Office 2007 / 2010.

Более того, желающие могут установить Adobe Photoshop. К сожалению, на моем устройстве многие приложения и игры выдавали ошибки, но автору похожей статьи с Android Police удалось запустить «тяжелый» пакет работы с графикой от Adobe.

Итоги

На текущем этапе разработки CrossOver для Android и Chrome OS — это очень нестабильная и во многом неудобная утилита, которая хоть и может запускать многие Windows-приложения, но все же делает это плохо. На планшетах и смартфонах работать с такой эмуляцией практически невозможно, но для ноутбуков на базе Chrome OS или Remix OS — это отличная возможность использовать приложения от Windows.

В будущем CrossOver может стать лучше в плане возможностей и совместимости. Так как Google сама собирается адаптировать Android для гибридных планшетов и компьютеров (десктопный режим Android 7.0), то можно сказать, что CrossOver ждет большое будущее. Главное — реализация. Будем надеяться, что разработчики из CodeWeavers доделают свою утилиту до хорошего состояния.

Оцените статью