Dzmitryj_Black
@Dzmitryj_Black
Front-end Engineer

Как декомпилировать программу?

Здравствуйте. Есть программа для настройки подсветки клавиатуры (и много чегоо еще). Я хочу ее декомпилировать и использовать часть кода (куксок для настройки подсветки) для работы на линуксе (с моими задачами, к сожалению, винда справляется через пятую точку).
Есть ли способ перевести установленную программу -> си?
Какой начальный язык - не знаю. Мое предположение, что c#, т.к. программа "специально предназначена для работы в windows 10". Как узнать?
  • Вопрос задан
  • 3527 просмотров
Решения вопроса 1
@Danil6969
Reverse engineer (native & managed)
Тут два варианта: открываете в dotPeek, если в файле есть CLR заголовок , то он позволит посмотреть классы и структуру файла, затем уже декомпилировать методы. Если же выведет "dll not supported" или "exe not supported", то это значит, что никаких классов и структуры программы там нет, только экспортируемые функции и суброутины (внутренние функции, процедуры), методов никаких нет, т.е. используется парадигма процедурного программирования (x86 - процедурный язык, как и любой другой машинный, соответственно декомпилированный C - тоже, ООП здесь нет и не предвидится, имейте в виду). Здесь уже надо использовать декомпилятор машинного кода, к примеру Ghidra; Hexrays устарел, но тоже как вариант можете попробовать. Потом извлечённый C-код компилируете и собираете, одна функция за другой, исправляя ошибки, которые может допустить декомпилятор. В случае с C#, если там был CIL, у вас будут классы, поля и методы. Если используется технология mixed dll/exe, то совмещать dotPeek и Ghidra.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
20ivs
@20ivs
Пользователь пока ничего не рассказал о себе.
если бы можно было просто взять и декомпилировать нужную программу, то мы жили бы в другом мире, без пиратства и копирайтерства.
Ответ написан
Комментировать
Jump
@Jump Куратор тега Windows
Системный администратор со стажем.
Есть ли способ перевести установленную программу -> си?
Нет.
Декомпиляция это чтение машинных кодов - фактически ручная работа.
Ответ написан
Комментировать
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Декомпиляция .NET программ - дело несложное. Попробуйте использовать dotPeek. После декомпиляция нужно будет разбираться в структуре программы и переводить все на нужный Вам ЯП. Это уже ручная работа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы