На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Как записать в память по адресу функции?
    Да банально:
    1. взять какую-то функцию A(...) из DLL, что поближе к желаемой B(...).
    2. Узнать внешне/руками/физически смещение от A к B.
    3. Узнавая адрес A, и делая к нему тот самый прирост, полу́чите полное владение и B. :whistle:
      Цитата
      Да банально:
      1. взять какую-то функцию A(...) из DLL, что поближе к желаемой B(...).
      2. Узнать внешне/руками/физически смещение от A к B.
      3. Узнавая адрес A, и делая к нему тот самый прирост, полу́чите полное владение и B. :whistle:

      Славян, мы про адреса функции в таблице импорта говорили =)

      Довел до ума свой хук перенес хук в функцию, просчитал все адреса, сделал вывод всех ошибок из функции, вылизал код, сделал переходник __stdcall to cdecl, хукаю теперь очень просто, одной командой:
      hook(имя_оригинала_функции, оригинал_модуль, моя_функция, мой_модуль, размер_перемещаемых_команд)
      Хукает на раз два, пока что только __stdcall, будет потребность и другие соглашения добавлю. Самое оригинальное решение было сделать буфер и писать туда асм код, т.к. язык на котором пишу асм вставки не поддерживает, а потом вызывать джампом этот буфер под видом функции. Работать будет в 90% случаев, если в перемещаемом коде нет jmp/call, в таком случае доп инструкции нужно будет писать. Назвал его "Буферный нубо хук" :D Будет время, добью всетаки хук таблиц импорта.
      Сообщение отредактировано: Rzonex -
        Цитата Rzonex @
        ЫукпШ Я хукаю функцию в модуле Engine.dll и эта функция юзается там же, этим же модулем. Импорт я не смотрел, но очень сильно подозреваю, что этой функции там нет. Что делать? :)

        Однозначного рецепта нет, нужно исследовать конкретную ситуацию.
        Просто читаем экспорт этого модуля (специальной утилитой).
        Если в экспорте функция есть, значит вероятно кто-то её вызывает.
        Тоже некой утилитой читаем импорт подозреваемого модуля и
        ищем ссылку на эту функцию из него.
        Если есть, значит будем перехватывать.
        Если нет, значит надо перехватывать LoadLibrary и GetProcAdress ...
        и исследовать дальше. Что именно явно загружается и какие
        функции ищутся там.
        я же предлагал - почитай Рихтера, в книге лучше изложено.
        -----
        В процессе реверс инжиниринга решения придётся принимать по ходу
        расследования. Заранее указать, как достигнуть успеха в
        конкретном случае невозможно.
        Сообщение отредактировано: ЫукпШ -
          Цитата ЫукпШ @
          я же предлагал - почитай Рихтера, в книге лучше изложено.

          Читал я его... Это совсем не легкое чтиво. Сидеть и вникать в каждую строчку.
          В общем спасибо за помощь ЫукпШ, Славян.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0207 ]   [ 17 queries used ]   [ Generated: 19.03.24, 06:26 GMT ]