Портал о бытовой технике

Exe файла получить исходный код. Как открыть.DLL или.EXE файл в редакторе ресурсов


Иногда ошибки 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.

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

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

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

  • 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. Лично моё мнение - раскрывается-взламывается всё, но на это нужно потратить много-много времени. Возможно год и более (зависит от опыта и инструментов, в свободном доступе хороших инструментов нету).

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

-Инструментарий -
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

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

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

Загрузка...