Как прочитать код программы exe

Содержание

Программы, созданные на языке программирования, требуют компиляции, чтобы машина могла понять, что делать. Это означает, что код на языке программирования преобразуется в машинный код, который компьютер может использовать. Обычно программисты хранят исходный код программы в файлах с расширением .c, .cpp, .java, .py и так далее. Однако иногда бывает полезно получить исходный код из программы, которая была уже скомпилирована и сохранена в файле с расширением .exe.

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

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

13. Ломаем exe файл в поисках пароля.

Как извлечь исходный код из файла .exe?

1. Используйте декомпилятор

Декомпиляция — это процесс преобразования исполняемого файла в исходный код на высоком уровне. Для этого используются специальные программы — декомпиляторы. Существует множество декомпиляторов, но не все они могут преобразовать исполняемые файлы в исходный код, работающий «из коробки». Большинство декомпиляторов дают возможность получать лишь «бинарный» код, который может потребовать дополнительной обработки.

2. Извлечение из памяти

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

3. Свяжитесь с разработчиками

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

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

Основные причины извлечения исходного кода

Разработка собственного ПО на основе готового решения

Часто бывает так, что есть готовое программное решение, но требуется некоторое его изменение. В таком случае, если у вас нет доступа к исходному коду, изменение программы становится невозможным. Поэтому, извлекая исходный код, вы можете изменить программу под свои нужды.

Понимание работы программы

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

Вопрос — ответ #4 — Как читать исходный код других программ? Зачем?

Безопасность

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

Улучшение производительности

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

Обучение

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

Анализ кода конкурентов

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

Как получить исходный код из .exe на Windows

Шаг 1: Используйте декомпилятор

Для начала, нужно скопировать .exe файл на компьютер и установить декомпилятор, который может прочитать исходный код. Программа декомпиляции может быть бесплатной или платной, и наиболее надежные декомпиляторы стоят денег. Рекомендуется использовать более популярные декомпиляторы, такие как JetBrains dotPeek или ILSpy.

Шаг 2: Откройте .exe файл в декомпиляторе

После запуска декомпилятора, нужно выбрать .exe файл для открытия. В идеале, декомпилятор может прочитать содержимое файла и отобразить его в удобном виде. Однако, если приложение было создано на C++ или код был скомпилирован без отладочной информации, все может оказаться намного труднее.

Шаг 3: Работайте со скомпилированным кодом

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

Читайте также:
Почему исчезли программы из меню пуск

Как мы видим, получение исходного кода из .exe на Windows может оказаться сложной задачей. Тем не менее, используя подходящий декомпилятор и потратив время на работу с ним, вы можете добиться успеха. Это может быть полезно для изучения чужого кода, исправления ошибок или дополнения функциональности в программе.

Как получить исходный код из .exe на Linux

1. Используйте декомпилятор

Декомпиляторы позволяют извлекать исходный код из исполняемых файлов .exe. На Linux один из наиболее популярных декомпиляторов — это RecStudio. Это инструмент, который может разбирать бинарные файлы и преобразовывать их обратно в исходный код. Программа поддерживает большинство распространенных языков программирования, таких как С, С++, Java и т.д.

Установите RecStudio на свой компьютер и откройте в нем файл .exe. Затем выберите вкладку «Дизассемблер». Выберите метод декомпиляции, который подходит для вашего файла. После завершения процесса декомпиляции может потребоваться ручная работа над исходным кодом, чтобы убрать зависимости от библиотек и изменения, которые были внесены в процессе компиляции.

2. Используйте эмуляторы Windows

Если у вас есть доступ к Windows, вы можете использовать эмуляторы Windows на Linux, такие как Wine и Proton. Эти инструменты могут запускать программы .exe на Linux. Запустите .exe при помощи эмулятора, откройте исходный код и скопируйте его.

3. Обратитесь к исходному коду

Найдите исходный код приложения вместо .exe на сайтах проектов и репозиториях онлайн-хранилищах. Если приложение бесплатное или с открытым исходным кодом, то проблем с поиском не возникнет, в противном случае, выйдет приобрести программу или использовать другой инструмент вместо этой.

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

Альтернативные методы извлечения исходного кода

1. Использование декомпилятора

Декомпилятор — это специальная программа, которая позволяет превратить исполняемый файл обратно в исходный код. Декомпиляторы могут быть использованы в тех ситуациях, когда не удалось получить исходный код программы и нужно изменить некоторые ее функции. Существуют бесплатные и коммерческие декомпиляторы, но они не всегда могут восстановить весь исходный код и могут привести к нарушению авторских прав.

2. Извлечение исходного кода из памяти

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

3. Контакт с автором программы

Если все другие методы не удалось применить, можно связаться с автором программы и попросить его предоставить исходный код. Этот метод может оказаться наиболее эффективным, если автор открыт для разговоров и готов предоставить необходимую информацию. Однако, автор может отказаться предоставить исходный код из-за патентных или авторских прав.

Источник: poselok-polesje.ru

Как читать / писать машинный код .exe вручную?

Я не очень хорошо знаком с магией компилятора. Акт преобразования кода, читаемого человеком (или не действительно читаемых инструкций ассемблера) в машинный код, для меня представляет собой ракетостроение в сочетании с колдовством.

Я сузлю тему этого вопроса до исполняемых файлов Win32 (.exe). Когда я открываю эти файлы в специализированном средстве просмотра, я могу найти строки (обычно 16 байт на символ), разбросанные в разных местах, а все остальное — просто мусор. Я полагаю, что нечитаемая часть (большинство) — это машинный код (или, возможно, ресурсы, такие как изображения и т. Д.).

Есть ли простой способ чтения машинного кода? Открывая exe как файловый поток и читая его побайтно, как можно превратить эти отдельные байты в сборку? Есть ли прямое соответствие между этими байтами инструкций и инструкцией Assembly?

Как пишется .exe? Четыре байта на инструкцию? Более? Меньше? Я заметил, что некоторые приложения могут создавать исполняемые файлы точно так же: например, в ACD See вы можете экспортировать серию изображений в слайд-шоу. Но это не обязательно должно быть слайд-шоу в формате SWF, ACD See также может создавать EXE-файлы для презентаций.

Как это сделать?

Как я могу понять, что происходит внутри EXE-файла?

Peter Perháč 16 Апр 2009 в 18:26
16 Апр 2009 в 18:39

Спасибо, выглядит хорошо. И классный Process Explorer. Начала пользоваться пару месяцев назад, все просто супер. Каждый раз, когда я запускаю его, я не могу не задаться вопросом, КАК ОНИ.

Peter Perháč
16 Апр 2009 в 18:48

Просто отложенный комментарий здесь; как вам удалось в конце концов с этим справиться? Удалось ли вам зайти очень далеко?

21 Авг 2009 в 09:48

13 ответов

Лучший ответ

OllyDbg — отличный инструмент, который разбирает EXE на читаемые инструкции и позволяет вам выполнять инструкции одну за другой. . Он также сообщает вам, какие функции API использует программа и, если возможно, аргументы, которые она предоставляет (если аргументы находятся в стеке).

Вообще говоря, инструкции ЦП имеют переменную длину, некоторые из них — однобайтовые, другие — два, некоторые — три, некоторые — четыре и т. Д. Это в основном зависит от типа данных, ожидаемых инструкцией. Некоторые инструкции являются обобщенными, например «mov», который сообщает ЦП переместить данные из регистра ЦП в место в памяти или наоборот. На самом деле существует множество различных инструкций «mov», для обработки 8-битных, 16-битных, 32-битных данных, для перемещения данных из разных регистров и так далее.

Вы можете взять Учебник по языку ассемблера для ПК доктора Пола Картера, который представляет собой бесплатную книгу начального уровня, в которой рассказывается о сборка и принцип работы процессора Intel 386. Большинство из них применимо даже к современным потребительским процессорам Intel.

Читайте также:
Как удалить программу ворд

Формат EXE специфичен для Windows. Точка входа (т.е. первая исполняемая инструкция) обычно находится в том же месте в EXE-файле. Все это сложно объяснить сразу, но предоставленные мной ресурсы должны помочь вылечить хотя бы часть вашего любопытства! 🙂

dreamlax 16 Апр 2009 в 18:33

Это очень хороший ответ. вы правы насчет моего любопытства. Дело не в том, что мне НУЖНО дизассемблировать исполняемые файлы, мне просто очень интересно, и я хотел бы немного поиграть с исполняемыми файлами. Получите это чувство, когда я понимаю что-то за пределами моего нынешнего кругозора 🙂

Peter Perháč
16 Апр 2009 в 18:38

Вам нужен дизассемблер, который превратит машинный код в язык ассемблера. Эта ссылка на Википедию описывает процесс и предоставляет ссылки на бесплатные дизассемблеры. Конечно, если вы говорите, что не понимаете язык ассемблера, это может быть не очень информативно — что именно вы здесь пытаетесь сделать?

anonanon 16 Апр 2009 в 18:30
Не ссылается на Windbg microsoft.com/whdc/devtools/debugging/installx86. mspx
16 Апр 2009 в 18:37

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

C:WINDOWS>debug taskman.exe -u 0D69:0000 0E PUSH CS 0D69:0001 1F POP DS 0D69:0002 BA0E00 MOV DX,000E 0D69:0005 B409 MOV AH,09 0D69:0007 CD21 INT 21 0D69:0009 B8014C MOV AX,4C01 0D69:000C CD21 INT 21 0D69:000E 54 PUSH SP 0D69:000F 68 DB 68 0D69:0010 69 DB 69 0D69:0011 7320 JNB 0033 0D69:0013 7072 JO 0087 0D69:0015 6F DB 6F 0D69:0016 67 DB 67 0D69:0017 7261 JB 007A 0D69:0019 6D DB 6D 0D69:001A 206361 AND [BP+DI+61],AH 0D69:001D 6E DB 6E 0D69:001E 6E DB 6E 0D69:001F 6F DB 6F
Dead account 16 Апр 2009 в 18:29

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

Peter Perháč
16 Апр 2009 в 18:41

Вы также можете написать новый код и сохранить его обратно в файл. Только сумасшедший [или хакер] будет использовать Debug

Dead account
16 Апр 2009 в 18:54

Считайте меня одним из немногих, кто до сих пор использует отладку. К вашему сведению: DEBUG от Microsoft разбирает только 16-битный реальный режим. Если вам нужна отладка с поддержкой 32-разрядного DPMI, попробуйте версию japheth: japheth.de/debxxf.html

Coding With Style
21 Окт 2009 в 16:29

Исполняемый файл, который вы видите, имеет формат Microsofts PE (Portable Executable). По сути, это контейнер, который содержит некоторые данные о программе, относящиеся к операционной системе, а сами данные программы разделены на несколько разделов. Например, код, ресурсы, статические данные хранятся в отдельных разделах.

Формат раздела зависит от того, что в нем находится. Раздел кода содержит машинный код в соответствии с исполняемой целевой архитектурой. Чаще всего это Intel x86 или AMD-64 (то же, что и EM64T) для двоичных файлов Microsoft PE. Формат машинного кода — CISC, он восходит к 8086 и более ранним версиям.

Важным аспектом CISC является то, что размер его инструкций непостоянен, вы должны начать чтение в нужном месте, чтобы извлечь из него что-то ценное. Intel издает хорошие руководства по набору инструкций x86 / x64.

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

И еще есть MSIL EXE: исполняемые файлы .NET, содержащие промежуточный язык Microsofts, они не содержат машинно-зависимый код, а код .NET CIL. Технические характеристики доступны на сайте ECMA.

Их можно просмотреть с помощью такого инструмента, как Reflector.

grover 16 Апр 2009 в 18:36

Содержимое EXE-файла описано в переносимом исполняемом файле. Он содержит код, данные и инструкции для ОС о том, как загрузить файл.

Между машинным кодом и сборкой существует соответствие 1: 1. Программа дизассемблера выполнит обратную операцию.

На i386 нет фиксированного количества байтов на инструкцию. Некоторые из них состоят из одного байта, некоторые намного длиннее.

MaxVT 16 Апр 2009 в 18:38

Относительно этого вопроса, кто-нибудь все еще читал такие вещи, как CD 21?

Я вспомнил Сандру Баллок в одном шоу, которая фактически читала экран с шестнадцатеричными числами и выясняла, что делает программа. Вроде как текущая версия чтения кода Матрицы.

Если вы читаете такие вещи, как CD 21, как вы запоминаете различные комбинации?

zeroin23 16 Апр 2009 в 20:53

Точно так же программисты, не понимающие английский, учатся программировать на языках с английским синтаксисом. Я думаю, что любой, кто программировал на низком уровне в DOS, помнит CD 21.

Coding With Style
14 Окт 2009 в 04:21

Я бы посоветовал взять немного исходного кода Windows C и собрать и начать его отладку в Visual Studio. Переключитесь в режим разборки и переходите по командам. Вы можете увидеть, как код C был скомпилирован в машинный код, и посмотреть, как он выполняется шаг за шагом.

Aardvark 16 Апр 2009 в 18:35

Если это так чуждо вам, как кажется, я не думаю, что отладчик или дизассемблер помогут — сначала вам нужно выучить программирование на ассемблере; изучить архитектуру процессора (множество документации можно загрузить с сайта Intel). А поскольку большая часть машинного кода генерируется компиляторами, вам необходимо понимать, как компиляторы генерируют код — самый простой способ написать множество небольших программ, а затем их дизассемблировать, чтобы увидеть, во что превратился ваш C / C ++.

Пара книг, которые помогут вам понять: —

  • Реверсивный
  • Взлом = Искусство эксплуатации

U62 16 Апр 2009 в 18:50

Чтобы получить представление, установите точку останова на каком-нибудь интересном коде, а затем перейдите в окно ЦП.

Если вас интересует больше, проще скомпилировать короткие фрагменты с помощью Free Pascal, используя параметр -al.

Читайте также:
Как пользоваться программой навител на телефоне

FPC позволяет выводить сгенерированный ассемблер во множестве форматов ассемблера (TASM, MASM, GAS) с помощью параметра -A, и вы можете чередовать исходный код паскаля в комментариях (и других) для облегчения перекрестных ссылок.

Поскольку это ассемблер, созданный компилятором, в отличие от ассемблера из дизассемблированного .exe, он более символичен и прост в использовании.

Marco van de Voort 8 Май 2009 в 17:58

+1, я использую Delphi на casual basis , и меня заинтриговали окна ЦП, FPU и т. Д., В которых можно переходить от одной инструкции к другой и смотреть, что происходит. Мне было интересно, как эти инструкции затем превращаются в EXE-файл. И как можно генерировать EXE-файлы (см. пример ACD). Мне особенно нравится идея, представленная BCS 🙂

Peter Perháč
8 Май 2009 в 19:16
Marco van de Voort
8 Май 2009 в 19:32

Знакомство с низкоуровневой сборкой (я имею в виду низкоуровневую сборку, а не «макросы» и т. Д.), Вероятно, просто необходимо. Если вы действительно хотите напрямую читать необработанный машинный код, обычно вы используете для этого шестнадцатеричный редактор. Однако, чтобы понять, что делают инструкции, большинство людей использовали бы дизассемблер, чтобы преобразовать это в соответствующие инструкции сборки. Если вы относитесь к меньшинству, которое хочет понимать сам машинный язык, я думаю, вам понадобится Руководства разработчика программного обеспечения для архитектур Intel® 64 и IA-32. Том 2 специально описывает набор инструкций, который относится к вашему запросу о том, как читать сам машинный код и как с ним связана сборка.

Coding With Style 25 Сен 2009 в 09:15

И ваше любопытство, и ваш уровень понимания именно там, где я был когда-то. Я настоятельно рекомендую Код: скрытый язык компьютерного оборудования и программного обеспечения. Это не ответит на все вопросы, которые вы задаете здесь, но прольет свет на некоторые аспекты совершенно черной магии компьютеров. Это толстая книга, но очень удобочитаемая.

Dinah 16 Апр 2009 в 21:59

ACD See, вероятно, использует тот факт, что файлы .EXE не проверяют ошибки длины файла или чего-либо, выходящего за пределы ожидаемой части файла. Из-за этого вы можете создать файл .EXE, который будет открывать себя и загружать все, что выходит за пределы заданной точки, как данные. Это полезно, потому что затем вы можете создать .EXE, который работает с заданным набором данных, просто прикрепив эти данные к концу соответственно написанного .EXE

(Я понятия не имею, что такое ACD See, так что относитесь к этому с большой долей скепсиса, но я действительно знаю, что некоторые программы создаются таким образом.)

BCS 17 Апр 2009 в 22:55

Каждая инструкция находится в машинном коде и хранится в специальной области памяти внутри процессора. В ранних книгах INTEL для своих инструкций использовался машинный код, поэтому следует попытаться получить такие книги, чтобы понять это. Очевидно, что сегодня машинный код нелегко получить. Что было бы неплохо, так это программа, которая может преобразовывать шестнадцатеричный код в машинный. Или сделайте это вручную _ !! скучный

Conto 19 Янв 2019 в 22:26

Это не совсем ответ. Более того, машинный код, на который ссылается ОП, присутствует в файлах .exe и загружается в стандартную память. Не «внутри процессора».

Источник: question-it.com

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для экспертов
  • » Достать/получить исходник из exe-файла, который был «скомпилирован» при помощи nuitka и mingw64

#1 Июль 25, 2021 21:53:41

Достать/получить исходник из exe-файла, который был «скомпилирован» при помощи nuitka и mingw64

Ребята, есть серьёзный вопрос)
В сети не могу найти внятного/точного ответа на некоторые нюансы.
На всякий случай спрошу тут.

Знающие люди разъясните, пожалуйста, такой момент:

Допустим я написал программу на пайтоне (program.py) и сделал exe-обертку для неё при помощи pyinstaller… а затем бесплатно скинул в сеть…Для того, чтоб прогой пользовались (+1 к карме и тщеславию).
Однако, я не сильно хочу, чтоб кто-то брал мой код и подгонял его под свои нужды…или что-то переделывал в нём, а затем юзал…
Как известно, exe-обертку можно будет легко “декомпилировать” и вытащить исходник.
(При помощи pyinstxtractor.py и uncomply6 в cmd-шке любой юзер может достать мой program.py из exe-обертки).
Собственно, я сам это проделал со своей прогой (достал исходник за 2 минуты). Код как на ладони. Ничего не спрятать.

Есть вариант “защитить” код при помощи обфускации (потом попробую это выполнить).
Но сейчас у меня другой важный вопрос.

При помощи nuitka и mingw64 я “скомпилировал” прогу в небольшой экзешник. Все работает, все норм, вес проги маленький) Круть.
CMD: python -m nuitka –windows-disable-console –mingw64 program.py

При помощи pyinstxtractor теперь исходник не достанешь (ибо через nuitka все “компилировалось”).
Однако, наверное и на такой вариант есть свой способ достать исходник…
(В сети я что-то не нашёл такого способа)…

1) Не подскажете насколько серьёзно защищен исходник через компиляцию nuitka (понятно, что “декомпилировать” можно всё… но можно ли будет достать “целый” исходник?

2) Возможно ли будет вытащить из такого экзешника код так, как в экзешнике “скомпилированного” pyinstaller-ом (типо насколько читабелен будет исходник?)?
При обертке через pyinstaller в исходнике все практически точно также, только пробелы и отступы слегка съехали…читай не хочу

3) Насколько серьёзной будет защита если я сначала пропущу через обфускатор свой пайтон-файл, а потом скомпилирую его через nuitka/mingw64 ?

P.S.
С pyinstaller все понятно (как запускается и работает прога).

Если не сложно, то объясните, пожалуйста, пошагово то, как именно все работает в экзешнике полученным через nuitka… Мой исходник получается теперь переписан языком “С” и при его запуске все загружается в память устройства и исполняется программой?? (пардон, если вопрос бредовый).

Отредактировано Pes (Июль 25, 2021 21:54:39)

Источник: python.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru