Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Динамическое определение адресов функций в Delphi с использованием Madshi's madCodeHook

Delphi , Файловая система , DLL и PlugIns

Разработчики, сталкивающиеся с задачей внедрения динамических библиотек (DLL) в процессы других приложений, часто сталкиваются с проблемой изменения адресов функций при обновлении целевого приложения. Вопрос, поднятый пользователем, касается именно этой проблемы: как можно динамически определять адреса функций в процессе, на который осуществляется внедрение DLL с использованием компонентов Madshi's madCodeHook?

Проблема

Пользователь использует компоненты Madshi's madCodeHook для инжекции DLL в процессы других приложений с целью подключения к определенным функциям или процедурам. Проблема заключается в том, что при выходе новых версий целевого EXE адреса функций могут изменяться, что требует ручного переопределения адресов в DLL, что является неэффективным и ненадежным способом. Пользователь ищет способ динамического определения адресов функций, зная их определение, что позволит избежать необходимости ручного вмешательства.

Решение

В ответах на вопрос было предложено несколько подходов:

  1. Использование RTTI: В Delphi, начиная с версии D2010 и Delphi XE, RTTI доступен для всех опубликованных и публичных методов. Это означает, что адреса этих методов могут быть получены из таблиц RTTI.

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

  3. Автоматизация процесса: Пользователю рекомендуется автоматизировать процесс поиска функций, используемый в Ollydbg, и интегрировать его в DLL для самостоятельного поиска функций.

  4. Использование Madshi's disasm: Компонент Madshi's disasm может быть использован для поиска кода функций по опкодам или шестнадцатеричным байтам.

  5. GetProcAddress: В случае использования DLL, можно использовать функцию GetProcAddress для получения адреса экспортируемой функции. Однако, в данном случае функции не экспортируются, поэтому данный метод не подходит.

Подтвержденный ответ

Наиболее логичным и предпочтительным решением является использование Madshi's disasm для поиска нужного кода функций. Этот метод позволяет избежать необходимости ручного вмешательства и обновления адресов функций при каждом обновлении целевого приложения.

Пример кода на Object Pascal (Delphi)

uses
  Madshi.Disasm;

var
  Disassembler: TDDisasm;
begin
  Disassembler := TDDisasm.Create(nil);
  try
    // Здесь должен быть код для инициализации и использования Disassembler
  finally
    Disassembler.Free;
  end;
end;

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

Создано по материалам из источника по ссылке.

Разработчик в Delphi использует Madshi's madCodeHook для инжекции DLL и сталкивается с необходимостью динамического определения адресов функций в целевом приложении, чтобы адаптироваться к изменениям после обновлений.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 10:46:07/0.0035378932952881/0