Исходный код раскрыть невозможно если для этого постарались обеспечить безопасность (особенно если это фирменная вещь). Как открыть.DLL или.EXE файл в редакторе ресурсов Exe файла получить исходный код

Исходный код раскрыть невозможно если для этого постарались обеспечить безопасность (особенно если это фирменная вещь).

Но есть способы полностью или частично раскрыть код.

  • IDA Pro - самый лучший из безплатных взломщиков, некоторые макросы возможно позволяют преобразовать код назад. Но не всегда. Особо хорошо раскрываются borland-продукты.
  • Hiew.Exe бесплатная утилита, очень маленькая, позволяет править код на языке ассемблера. Можно править текстовые и целые константы. Можно ею даже сделать "перевод" программы на другой язык, затереть имя фирмы и т.п.
  • Если есть PDB-файл, или подшита debug-info к файлу то код можно получить в среде разработки (если debug-info полная) редко можно использовать. Исходный код получить нельзя, но можно получить "номера строк и имена исходников", а так же имена/значения всех констант, локальных переменных, избежать "раздроблености функций" а так же получить классы с начинкой класса (почти все структуры кроме текста программы) что значительно упростит понимание работы программы. Для некоторых библиотек (dll) pdb-файлы можно скачать отдельно. Врядли уважающая себя фирма допустит утечку pdb своего стоящего продукта.
  • Debug info, существует DebugInfo-информация встроеная в exe. Если есть такая информация, и соответствующая утилита (Например на Borland Delphi собран, и он есть в наличии), то можно сделать аналогичное предыдущему пункту. Но врядли уважающая себя фирма допустит такую "глупую" ошибку (аналогично pdb).
  • Если файл написан на с# его можно почти полностью просмотреть в кодах с помощью disSharp (такие программы "подключают" в таблице импорта лишь mscorlib и всё). DisSharp плохо дизассемблирует некоторые части программы, но возможно его платная версия или платная версия подобных утилит раскрывает код лучше.
  • Если файл написан на FoхPro, clipper и других подобный байт-кодовых языках - он раскрывается спец-утилитами (Refox например).
  • Утилита exescope.exe ResourceHacker.exe и её-подобные утилиты позволяют смотреть шапку, подключенные библиотеки (по ним можно понять на чём писана программа) и редактировать ресурсы программы (ресурс-формы в.т.ч. delphi, иконки, картинки, таблицы ресурсо-строк).
  • Если извесно чем создан код - думаю есть специальные утилиты способные его раскрыть (они платные и малодоступные).

Опять-же, это при условии что нету паковщика кода (тогда нужно сначала применить депаковщик), шифровальщика/самомодифицирующегося кода. Если не разбит обфускатором так что не распутать. Чем больше код - тем сложнее разобраться.

P.S. Лично моё мнение - раскрывается-взламывается всё, но на это нужно потратить много-много времени. Возможно год и более (зависит от опыта и инструментов, в свободном доступе хороших инструментов нету).


Иногда ошибки CODE.EXE и другие системные ошибки EXE могут быть связаны с проблемами в реестре Windows. Несколько программ может использовать файл CODE.EXE, но когда эти программы удалены или изменены, иногда остаются "осиротевшие" (ошибочные) записи реестра EXE.

В принципе, это означает, что в то время как фактическая путь к файлу мог быть изменен, его неправильное бывшее расположение до сих пор записано в реестре Windows. Когда Windows пытается найти файл по этой некорректной ссылке (на расположение файлов на вашем компьютере), может возникнуть ошибка CODE.EXE. Кроме того, заражение вредоносным ПО могло повредить записи реестра, связанные с Game Cracker. Таким образом, эти поврежденные записи реестра EXE необходимо исправить, чтобы устранить проблему в корне.

Редактирование реестра Windows вручную с целью удаления содержащих ошибки ключей CODE.EXE не рекомендуется, если вы не являетесь специалистом по обслуживанию ПК. Ошибки, допущенные при редактировании реестра, могут привести к неработоспособности вашего ПК и нанести непоправимый ущерб вашей операционной системе. На самом деле, даже одна запятая, поставленная не в том месте, может воспрепятствовать загрузке компьютера!

В связи с подобным риском мы настоятельно рекомендуем использовать надежные инструменты очистки реестра, такие как %%product%% (разработанный Microsoft Gold Certified Partner), чтобы просканировать и исправить любые проблемы, связанные с CODE.EXE. Используя очистку реестра , вы сможете автоматизировать процесс поиска поврежденных записей реестра, ссылок на отсутствующие файлы (например, вызывающих ошибку CODE.EXE) и нерабочих ссылок внутри реестра. Перед каждым сканированием автоматически создается резервная копия, позволяющая отменить любые изменения одним кликом и защищающая вас от возможного повреждения компьютера. Самое приятное, что устранение ошибок реестра может резко повысить скорость и производительность системы.


Предупреждение: Если вы не являетесь опытным пользователем ПК, мы НЕ рекомендуем редактирование реестра Windows вручную. Некорректное использование Редактора реестра может привести к серьезным проблемам и потребовать переустановки Windows. Мы не гарантируем, что неполадки, являющиеся результатом неправильного использования Редактора реестра, могут быть устранены. Вы пользуетесь Редактором реестра на свой страх и риск.

Перед тем, как вручную восстанавливать реестр Windows, необходимо создать резервную копию, экспортировав часть реестра, связанную с CODE.EXE (например, Game Cracker):

  1. Нажмите на кнопку Начать .
  2. Введите "command " в строке поиска... ПОКА НЕ НАЖИМАЙТЕ ENTER !
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER .
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да .
  6. Черный ящик открывается мигающим курсором.
  7. Введите "regedit " и нажмите ENTER .
  8. В Редакторе реестра выберите ключ, связанный с CODE.EXE (например, Game Cracker), для которого требуется создать резервную копию.
  9. В меню Файл выберите Экспорт .
  10. В списке Сохранить в выберите папку, в которую вы хотите сохранить резервную копию ключа Game Cracker.
  11. В поле Имя файла введите название файла резервной копии, например "Game Cracker резервная копия".
  12. Убедитесь, что в поле Диапазон экспорта выбрано значение Выбранная ветвь .
  13. Нажмите Сохранить .
  14. Файл будет сохранен с расширением.reg .
  15. Теперь у вас есть резервная копия записи реестра, связанной с CODE.EXE.

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

При помощи Resource Tuner вы можете открывать исполняемые файлы, такие как.EXE, .DLL, .OCX, скринсейверы (.SCR) и многие другие. Открыв файл, вы получаете доступ к ресурсам файла и можете заменять иконы, курсоры и графику в различных форматах, изменять строчки в меню, диалоговых окнах и других элементах пользовательского интерфейса.

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

Для более серьёзных изменений (которые, впрочем, ни к чему хорошему не приведут без достаточного опыта в программировании приложений для Windows) рекомендуем использовать PE Explorer (редактор структуры PE файлов) или FlexHex (хекс-редактор для бинарных файлов).

Открытие EXE или DLL файла в Resource Tuner

Поддерживает несколько способов открытия файлов. Чтобы открыть файл для просмотра и редактирования, нажмите кнопку Open File на панели инструментов или выберите команду File > Open из меню. Выпадающее меню рядом с кнопкой на тулбаре даёт вам быстрый доступ к списку последних открывавшихся файлов. Этот же список можно получить командой File > Recent Files из меню программы. Количество файлов в списке настраивается в диалоге Customize .


Вы также можете открыть файл при помощи Resource Tuner прямо из Проводника Windows, щёлкнув по файлу правой кнопкой и выбрав Open with Resource Tuner из контекстного меню.

Или вы можете просто перетащить и бросить иконку файла из Проводника Windows на иконку Resource Tuner на рабочем столе или на окно запущенного Resource Tuner.

Вы так же можете открыть файл из командной строки.
Например: restuner.exe filename.exe

При открытии файла Resource Tuner производит несколько автоматических операций: распаковывает файл , если обнаруживается, что он был запакован при помощи UPX, затем идёт проверка структуры и ресурсов файла на возможные ошибки, и наконец перестройка повреждённых ресурсов в соответствии со спецификацией формата исполняемых файлов.

Ошибки при открытии файла

Если при открытии файла возникает ошибка, то скорее всего по трём причинам: файл защищён, файл 16-битный, или это вообще не исполняемый файл.

1. Ошибка: Файл повреждён, сжат упаковщиком или защищён протектором.

Вероятность того, что файл сжат для уменьшения размера, весьма велика. Упаковщиков и протекторов для исполняемых файлов существует не один десяток, и всё время появляются новые. Resource Tuner поддерживает распаковку только одного, зато самого распостранённого упаковщика - UPX . Остальные упаковщики не поддерживаются, и вам придётся самостоятельно заниматься распаковкой файла, прежде чем вы сможете открыть файл для просмотра или редактирования.

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

2. Ошибка: Файл определён, как 16-битный NE Executable. Этот формат не поддерживается!

Наши программы работают только с 32- и 64-битными PE файлами. Формат NE (сокращение от "New Executable") - это формат 16-битных приложений, оставшийся в наследство от старых версий Windows 3.xx. С появлением Windows 95 этот формат считается устаревшим и не используется, хотя и может исполнятся на современных платформах от Microsoft. Мы не поддерживаем 16-битные файлы и не собираемся их поддерживать.

3. Ошибка: Файл не является EXE или DLL файлом. Вообще!

Resource Tuner определяет файл не по расширению. Если вы переименуете расширение у исполняемого файла, скажем, исправите.EXE на.TXT или вообще удалите расширение, Resource Tuner этим не обманешь: программа при открытии файла анализирует заголовок файла внутри файла, а на расширение вообще не смотрит.

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

Какие файлы не имеет смысла открывать в редакторе ресурсов

Не смотря на то, что Resource Tuner предназначен для открытия и редактирования любых 32-/64-битных исполняемых файлов, существуют некоторые виды EXE файлов, в которых ресурсы практически отсутствуют.

1. Файлы, созданные при помощи Visual Basic.

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

2. Файлы.EXE размером в гигабайт и более.

Поскольку Resource Tuner - это 32-битная программа, существуют естественные ограничения для размещения образа открываемого файла в виртуальной памяти в пределах первого гигабайта. Файл размером в гигабайт и более туда просто не поместится.

3. Самораспаковывающиеся архивы в виде EXE файлов.

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

4. Инсталляторы других программ.

В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии. Очень похожи на п.3. Файл инсталлятора можно рассматривать как контейнер, внутри которого содержится другой.EXE файл в сжатом виде и подпрограмма для его извлечения. К тому же, программы для создания инсталляторов используют разные алгоритмы для хранения внутри себя архивированных данных.

Скачайте бесплатную ознакомительную версию!


Resource Tuner работает на всех версиях Windows
от 2000 и XP до 8 и 10.

Минимальные системные требования:
Процессор Intel Pentium® или AMD K5 166 MHz
16 MB RAM

*** ВСЕ НАПИСАННОЕ ИСПОЛЬЗОВАТЬ ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ! ***

-Инструментарий -
OLLYDBG
Приложение, в которое будем вставлять свой код.
Это будет NOTEPAD.EXE .
Желательно сделать копию файла.
Это все

-Начало -
Наша цель - вклеить свой код в Notepad.EXE .
Мы вклеим простой MessageBox на запуск Блокнота .
Запустим Блокнот , и убедимся, что он запускается нормально.

Если ты уверен, что это оригинальный Notepad.exe , открой его в Olly .
Появится следующее окошко:

Для того, чтобы вставлять свой код, нам нужно место для этого в коде программы.
В ехе-файлах бывает много CodeCaves . Это байты (DB 00 ).
Тебе нужно просто прокрутить код программы немного ниже начала, и ты узришь CodeCave :


Красным прямоугольником выделен кусок с CodeCave "ами?
Сюда ты можешь вставить любой код, и твоя программа не будет вылелать.
Если ты знаешь API-функцию для вызова MessageBox просто пропусти эти строчки.

***** НАЧАЛО ЦИТАТЫ ИЗ РУКОВОДСТВА ПРОГРАММИСТА WIN32

The MessageBox function creates, displays, and operates a message box.
The message box contains an application-defined message and title,
plus any combination of predefined icons and push buttons.

Int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);

***** КОНЕЦ ЦИТАТЫ ИЗ РУКОВОДСТВА ПРОГРАММИСТА WIN32

Нажмите, чтобы раскрыть...

Это все, что нужно знать о MessageBox .
Давайте же сделаем что-нибудь с помощью CodeCaves .
Для того, чтобы использовать MessageBox , нам нужно создать текст, который мы будем выводить в
MessageBox . На следующей картинке я выделил пару строк с CodeCaves и
показал меню BinaryEdit для тебя (оно нам пригодится).


Если ты нажал Binary=>Edit или (CTRL+E) ты увидишь следующее окно.
Просто заполни верхнее поле так же, как и я.
Нажми OK, и ты увидишь модифицированный код (выделен красным):
Нажми теперь CTRL+A, чтобы переанализировать код.
OK! Теперь, если ты хочешь сделать заголовок сообщения другим, продублируй эту строчку
(это как второй параметр вызова процедуры).

-Немного ассемблера -

Пришло время и для ASM а
Вот хороший пример!

PUSH 0 ; BUTTONS = <ТОЛЬКО КНОПКА OK>
PUSH 1008751 ; CAPTION = НАШ АДРЕС "INJECTED NOTEPAD"
PUSH 1008751 ; MESSAGE = ТО ЖЕ САМОЕ.
PUSH 0 ; ICON = <БЕЗ ИКОНКИ>
CALL MessageBoxA; Вызов MessageBoxA с указанными параметрами.

Нажмите, чтобы раскрыть...

Эти строчки, введенные в Олли будут выглядеть так:

Видишь стрелку?! ЭТО ОЧЕНЬ ВАЖНО !
Ведь если мы просто запустим программу, то ничего не произойдет. Почему?
Потому что наша маленькая процедура еще нигде не вызывается!
Нужно выписать адрес ее начала, т.е. адрес "PUSH 0 ", т.к. нам нужно сделать прыжок
на нашу процедуру и вернуться назад
Отлично. Теперь вернись на начало программы (кнопка С на панели инструментов Олли , либо как на рисунке).

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


Вставьте их в любой текстовый реактор - они нам еще пригодятся.
Снова вернись на начало программы.
(На картинке выше это PUSH 70 ).
Двойной щелчок по этой строке отобразит нам следующее окно.
В него нужно ввести "JMP <адрес PUSH 0, который мы записывали ранее> "
Нажми кнопку Assemble и код программы снова изменится, т.е. изменения выделятся красным.

Посмотри на красный прямоугольник! На этот адрес нам нужно перепрыгнуть по завершении нашего кода.
Но если мы перепрыгнем сюда после инъекции, программа выполнится будто бы без нее
Поэтому есть еще одна штука, которую нужно сделать!
Сравни новое начало программы со старым, что мы копировали в текстовый редактор.
Ты увидишь, что две строчки переписались! Но нам нужны они для нормальной работы
программы без ошибок. Найди строки, которые перезаписались.
В моем случае это был следующий код:

PUSH 70
PUSH NOTEPAD.01001898

Нажмите, чтобы раскрыть...

Щелкни по первой строчке кода (наш JMP ) и нажми ENTER .
Ты попадешь на вставленный код вызова MessageBox!
После CALL MessageBoxA нам нужно будет вставить эти две строчки И прыгнуть назад!


ВОТ И ВСЕ!
(Проверить, правильно ли работает прыжок легко - Нажать на нем ENTER !)
Чтобы сохранить наш "модифицированный" Блокнот, выполни действия как на картинке:
Затем нажми Copy All . В появившемся окне нужно нажать правой кнопкой мыши,
выбрать пункт меню Save File и сохранить под новым именем. Запустите файл:

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

Для начала, после добавления процедуры в импорты, нужно узнать ее FT (FirstThunk "IAT") . Она отображается здесь:

Запомните его! (назову его TrueAdress )​


Теперь переходим к тому месту, где мы будем писать свой код (Code Caves ).
Теперь добавим правильный вызов нашей функции MessageBoxA . Для этого напишем:

JMP [[B]TrueAdress]

Если Olly автоматически определил новый код как вызов процедуры - это очень-очень хорошо! Значит дальше будет проще. Если же нет, значит вы посчитали адрес импорта не правильно. Перепроверьте!
Запишите адрес этого JMP (назову его TrueCall ).

Теперь все делаем как в статье (вставка строк, PUSH-ей, и т.д.), но вместо:

Call MessageBoxA

нужно написать:

Call [B]TrueCall

Остальное остается прежним.

Нажмите, чтобы раскрыть...