Внедрение вызова своей функции в чужую DLL

Тема в разделе "WASM.RESEARCH", создана пользователем xcode, 2 сен 2009.

  1. xcode

    xcode Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    105
    Я c++ программист, реверсингом никогда особо не занимался, а тут вдруг понадобилось, поэтому просьба объяснить как можно подробнее:)

    Итак, есть dll, к которой нет исходников. Незакриптованная, IDA Pro+Hexrays спокойно ее дизассемблировали. Есть конкретное место в этой DLL, куда мне нужно вставить вызов своей функции.
    Как это сделать? Есть ли софт, позволяющий сделать это в "дружелюбном" режиме, не прибегая к hex редактору? а если нет, то как это грамотно сделать - куда чего вписывать???
    Проблема еще в том, что это место - середина другой функции, там нет незаполненных кодом "дырок", т.е. я это понимаю так придется затирать часть кода dll и переносить его в свою функцию, или что-то вроде того:)
     
  2. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    В статьях "Введение в крэкинг с нуля, используя OllyDbg - Глава 43" упоменаеться об этом. Там все описано в картинках.
     
  3. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Ток не в 43й главе. Я ошибся.
     
  4. um0v

    um0v New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    32
    xcode
    Если библиотека не является private - Вы ее выложите + требование.
     
  5. VaZoNeZ

    VaZoNeZ New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2009
    Сообщения:
    121
    В каком виде твоя функция?
    Если Dll, то добавь в импорт нужный фунции LoadLibrary, GetProcAddress и FreeLibrary.
    А дальше вписывай в свое "конкретное место" вызов функций из своей Длл
     
  6. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    xcode
    Ты сказал Hexrays? Значит исходник есть:) Приводи в порядок и вставляй 8)
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    xcode
    Если в модуле нет самопроверок, он не самомодифицируется и тп., то подходит простой патч, если места не достаточно - расширение секций или добавление своей секции.
    Если модуль криптованный, самомодифицируется код, имеются проверки и тп., то наш код должен быть выполнен до начала исполнения какоголибо кода из целевого модуля. Это достигается внедрением кода в модуль(как в пред.) и изменением указателя на вход в хидере. Проще говоря пркручиваем к модулю загрузчик. Часто эффективны хардварные точки останова, так как ни одно приложение не следит должным образом за этим.
     
  8. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    Модуль не криптованный

    Места не будет на 99%. Так что проще всего добавить секцию.