Кодовая пещера
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Март 2020 г. ) |
Кодовая пещера — это серия неиспользуемых байтов в памяти процесса . Кодовая пещера внутри памяти процесса часто является ссылкой на раздел, в котором есть возможность внедрения пользовательских инструкций.
Обычное использование
[ редактировать ]Концепция пещеры кода часто используется хакерами и обратными инженерами для выполнения произвольного кода в скомпилированной программе. Это может быть полезным методом внесения изменений в скомпилированную программу, например, путем включения дополнительных диалоговых окон, изменения переменных или даже удаления проверок ключа программного обеспечения. Часто используя команду вызова, обычно встречающуюся во многих архитектурах ЦП , код переходит к новой подпрограмме и помещает следующий адрес в стек. После выполнения подпрограммы можно использовать команду возврата для извлечения предыдущей ячейки из стека в счетчик программ. Это позволяет существующей программе перейти к вновь добавленному коду без внесения существенных изменений в сам поток программы.
Преимущества
[ редактировать ]- Легко и быстро. Это означает, что процесс модификации выполняется быстро и легко. При изменении существующего кода с помощью таких инструментов, как Ollydbg , добавленные функции можно собрать и протестировать без каких-либо внешних зависимостей.
- Нет необходимости в исходном коде. Использование пещер кода может быть чрезвычайно эффективным, даже если исходный код программисту не предоставлен . Это позволяет программисту вносить такие изменения, как добавление или удаление функций в коде, без необходимости переписывать всю программу или связывать какие-либо внешние зависимости с существующим проектом.
Недостатки
[ редактировать ]- Легко сломать программу. Во многих случаях исполняемый файл модифицируется. Это означает, что в существующем скрипте может не быть выделенного кода для любого внедрения кода из-за нехватки ресурсов, предусмотренных в скрипте. Любая замена существующего скрипта может привести к сбою/вылету программы.
- Отсутствие универсальности. Внедрение кода в существующий сценарий означает, что ограниченное пространство позволяет вносить только простые изменения инструкций, а в качестве языка используется только ассемблер. Это можно смягчить с помощью инжекторов общих библиотек ( внедрение DLL [Windows] или LD_PRELOAD [Linux]), так что внедренная библиотека содержит уже скомпилированный код, а существующие инструкции в целевом двоичном файле просто изменяются для его использования.
Инструменты
[ редактировать ]- pycave : простой инструмент для поиска кодовых пещер в файлах Portable Executable (PE). [1]
- Ollydbg : отладчик для анализа кода. Он отслеживает вызовы и выполнение скриптов, а также отображает любые итерации в библиотеках и двоичных файлах. Код можно вставлять или удалять из EXE-файла непосредственно с помощью этого отладчика.
- PE: Explorer : позволяет пользователю открывать и редактировать исполняемые файлы, называемые PE-файлами (переносимые исполняемые файлы). Сюда входят файлы .EXE, .DLL и другие менее распространенные типы файлов.
- Cheat Engine : мощный инструмент, который читает память процесса и записывает память процесса. Это означает, что любые значения данных на стороне клиента можно изменять и редактировать. Он также может отображать изменения значений.
- TSearch : мощный инструмент, который читает память процесса и записывает память процесса. Как и Cheat Engine, он может изменять данные значений на стороне клиента. [2] [3] [4] [5]
Ссылки
[ редактировать ]- ^ «Пикейв» . Гитхаб . 27 октября 2021 г.
- ^ Руководство для начинающих по Codecaves - CodeProject
- ^ Изменение двоичных файлов: добавление диалогового окна-заставки. Архивировано 7 апреля 2014 г. на Wayback Machine.
- ↑ Взлом игр с использованием кодовых пещер. Архивировано 7 апреля 2014 г. на Wayback Machine.
- ^ Теории и методы Кодовых пещер.