Delphi и DLL

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Degger, 20 Oct 2011.

  1. Degger

    Degger New Member

    Joined:
    20 Aug 2010
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    Подскажите как в дельфи написать код который ищет в dll начало каждой процедуры
     
  2. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Функция GetProcAddress извлекает адрес экспортируемой функции или переменной из заданной динамически подключаемой библиотеки (DLL).
     
  3. Degger

    Degger New Member

    Joined:
    20 Aug 2010
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    Не мог бы подробнее описать?
    Мне нужна не определенная процедура а положение всех процедур в Dll
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Читаешь описание формата PE и готово.
    По факту делается так:
    1) прогружаешь DLL.
    2) из DOS заголовка берешь оффсет на PE
    3) в PE заголовке берешь адрес таблицы экспорта
    4) ручками разбираешь таблицу экспорта получая имена и оффсеты на функции (достаточно прибавить адрес загрузки DLL чтобы узнать где находится функция)

    Вот и всё. Таким образом можно получить адреса всех экспортируемых функций.
     
  5. Degger

    Degger New Member

    Joined:
    20 Aug 2010
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    А на API без посторонних файлов это можно реализовать?
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    По факту тут вообще ничего постороннее не надо. Достаточно загрузить DLL (через LoadLibraryEx) и дальше уже полностью всё ручками разбирается, без единого вызова WinAPI и прочих функций.
     
  7. Degger

    Degger New Member

    Joined:
    20 Aug 2010
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    Пример кто нибудь может кода написать а то не очень понимаю?
     
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Неумеешь срать не мучай жопу!!! Если ты даже такого элементарного не понял, то бери уже готовый софт который это сделает за тебя.

    1) В гугле дофига исходников на эту тему
    2) В гугле дофига информации на эту тему
    3) Формат PE файла описан ооочень хорошо и очень точно.

    Если тебе влом читать доку на PE, то юзать уже готовые системные функции (WinAPI есть специальные для этого). Если бы ты вбил бы в гугле то что тебе надо, то получил бы готовый пример прям на делфи.
    Только что самолично проверил это. А если не умеешь гуглом пользоваться, то о программировании даже не мечтай!
     
    #8 slesh, 20 Oct 2011
    Last edited: 20 Oct 2011