Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.27;
Скачать: CL | DM;

Вниз

Хай! Кто-нить знает, как узнать, какие функции есть в dll-ках?   Найти похожие ветки 

 
Лёха   (2002-04-15 16:17) [0]

Здравствуйте! Если кто-нибудьь знает, как узнать, какие функции и процедуры содержаться в dll-ках, пожалуйста ответьте!
Заранее спасибо!


 
watcher   (2002-04-15 17:37) [1]

Search for

Peering Inside the PE: A Tour of the Win32 Portable Executable File Format

in MSDN


 
Anatoly Podgoretsky   (2002-04-15 17:44) [2]

TDump


 
Севостьянов Игорь   (2002-04-16 13:07) [3]

У меня вот есть Dependency Walker for Win32 v. 1.0
от MS и функции показывает и связи с другими DLL и не только для DLL, но и OCX, EXE...


 
Iluxa   (2002-04-16 15:59) [4]

depends.exe


 
s.ts   (2002-04-16 19:46) [5]

Gexperts


 
KirilAlex   (2002-04-16 22:29) [6]

Проще всего использовать Виндовский "Быстрый просмотр",
правда увидеть можно только названия ф-ций.


 
Вольный Стрелок   (2002-04-17 11:22) [7]

а так, чтоб с указанием параметров?
не названий и смысла, конечно :))
Хоть количество их и тип. И возвращаемых значений.


 
drpass   (2002-04-17 12:02) [8]

Параметры увидеть не удастся - этой информации просто нет в dll. Для описания параметров и придуманы заголовочные файлы и SDK


 
Mystic   (2002-04-17 13:13) [9]

Список функций можно получить, например, так:


function EnumSymbols(SymbolName: PChar; SymbolAddress, SymbolSize: ULONG; Strings: Pointer): Bool; stdcall;
begin
TStrings(Strings).Add(SymbolName);
Result := True;
end;

function GetImageFunctionList( const FileName: string; Strings: TStrings): Boolean;
var
Handle: THandle;
hProcess: THandle;
VersionInfo: TOSVersionInfo;
begin
Strings.Clear;
Result := False;

SymSetOptions(SYMOPT_UNDNAME or SYMOPT_DEFERRED_LOADS);

VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
if not GetVersionEx(VersionInfo) then Exit;

if VersionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS
then hProcess := GetCurrentProcessId
else hProcess := GetCurrentProcess;

if not SymInitialize(hProcess, nil, True) then Exit;

Handle := LoadLibrary(PChar(FileName));
if Handle = 0 then Exit;

try

if not SymLoadModule(hProcess, 0, PChar(FileName), nil, Handle, 0) then Exit;
if not SymEnumerateSymbols(hProcess, Handle, EnumSymbols, Strings) then Exit;

finally
FreeLibrary(Handle);
end;
end;


(тестировал только на NT4


 
Mystic   (2002-04-17 13:24) [10]

Исправляю ряд неточностей в моем предыдущем постинге:

1) Каждому вызову SysInitialize должн соответствовать вызов SysCleanup.

2) Каждому вызову SymLoadModule должен соответствовать вызов SymUnloadModule

3) Надо подключить модуль ImageHlp

С уважением, Мистик.

P. S.

4)

> »» Перемещено из конференции "Работа с системой и железом"


Странно, по-моему это вопрос по API... А ветку "Работа с системой и железом" я вообще не заглядую.


 
Poirot   (2002-04-17 20:05) [11]

А можно ещё одно.... В IDA можно посмотреть параметры функций,но что-то я им недоверяю... Дельфийскую библиотечку (ДЛЛ) она не правильно распознала и не дала параметры... скорее всего она будет работать грамотно с ДЛЛ на С...
И встречный вопрос... а как отловить ошибку, которая при вызове функции в одной ДЛЛ вызывает её в другой...



Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-88510
Stexen
2002-05-14 22:59
2002.05.27
AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI AVI


14-88615
Val
2002-04-12 10:51
2002.05.27
---|Ветка была без названия|---


3-88350
Ura
2002-04-30 10:45
2002.05.27
Немогу создать уникальный индекс в IB


4-88688
AFROLOV
2002-03-26 13:09
2002.05.27
Как обойти такую ситуацию


3-88376
DPetrovich
2002-05-02 15:54
2002.05.27
агрегирующая функция для строкового типа