Форум: "Потрепаться";
Текущий архив: 2002.05.27;
Скачать: [xml.tar.bz2];
ВнизХай! Кто-нить знает, как узнать, какие функции есть в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c