Заюзать функции внутри DLL, сигнатуры которых неизвестны

Discussion in 'Реверсинг' started by fl00der, 5 Apr 2016.

  1. fl00der

    fl00der Moderator

    Joined:
    17 Dec 2008
    Messages:
    1,320
    Likes Received:
    306
    Reputations:
    86
    Прежде всего, в реверсинге я ноль от слова полный.
    Допустим, есть довольно древняя DLL-библиотека, которая не имеет какой-то особенной защиты, т.е. никто специально не запотился о том, чтобы в ней никто не мог ковыряться; более того, фактически, эта библиотека является SDK, т.е. она создана, чтобы сторонние приложения ее вызывали.
    Задача - установить не только имена функций (это я могу сделать с помощью dumpbin lib.dll /exports), но и параметры.

    Можно ли повесить какой-то хук на эту либу и отловить вызов к ней и оттуда получить нужную информацию?
    По ходу, написана библиотека на Visual C++ какой-то древней версии типа 6.0.
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,937
    Likes Received:
    805
    Reputations:
    224
    #2 Kaimi, 5 Apr 2016
    Last edited by a moderator: 6 Apr 2016
  3. goodguysoft

    goodguysoft Member

    Joined:
    25 Mar 2016
    Messages:
    49
    Likes Received:
    24
    Reputations:
    2
    По количеству аргументов еще не проблема, а вот их интерпретация - дело мутное. Вот высните, есть есть параметр, и в нем записано что-то вроде 0x7381012371234. Что это: указатель, какие-то флаги, дескриптор объекта ОС, и т. д.? Задача восстановить интерфейс DLL будет не намного легче, чем взлом софта. По сути, надо не только посмотреть, как обрабатывается стек (для 32 бит) или регистры + стек (для 64 бит), а в принципе пройти всю функцию пошагово и не раз.
     
    KIR@PRO likes this.
  4. DartPhoenix

    DartPhoenix Well-Known Member

    Joined:
    15 Sep 2013
    Messages:
    281
    Likes Received:
    4,208
    Reputations:
    5
    IDA же скрипты поддерживает. И вроде как вполне достойно определяет параметры (не без косяков конечно). Назначение параметров конечно самому придется определять, но кое-что скрипты все-таки умеют. Можно поработать напильником и экспортировать все что нашел в .h - файл, можно поискать. Кто-то такое уже делал скорее всего :)
     
Loading...