![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать название всех функций в длл ке? [D5, D6, NT4, Win2k, WinXP]
neodiX © (2002-09-27 17:08:00)Заранее всем спасибо за ответы.
neodiX (2002-10-02 14:02:00) [1]2 Толик
Thanks, это точно то, что я искал.
Теперь буду сидеть разбираться что к чему.
Толик (2002-10-01 18:07:00) [2]нашел где-то на этом сайте, честно говоря ни автора ни ссылки я не помню. Говорю сразу - авторство не моё, но тем не менее, а может быть именно поэтому :) работает.
function EnumSymbols(SymbolName: pchar; SymbolAddress, SymbolSize: longint;
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;
try
Handle := LoadLibrary(PChar(FileName));
if(Handle = 0)then
Exit;
try
if(not SymLoadModule(hProcess, 0, PChar(FileName), nil, Handle, 0))then
Exit;
try
if(not SymEnumerateSymbols(hProcess, Handle, @EnumSymbols, Strings))then
Exit;
finally
SymUnloadModule(hProcess, Handle);
end;
finally
FreeLibrary(Handle);
end;
finally
SymCleanup(hProcess);
end;
Result := True;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if(not GetImageFunctionList("user32.dll", ListBox1.Items))then
raise Exception.Create("Произошла ошибка");
end;
neodiX (2002-10-01 17:17:00) [3]2 Игорь Шевченко
Блин, точно читая саму длл"ку сразу после ее названия перечисляются все название функций которые онс экспортит. Это хорошо, но это самый легкий вариант ,я не говорю, что он плохой, но все же меня больше интересует как это будет через стандртные функции. Все иду разбираться дальше.
Игорь Шевченко (2002-10-01 16:35:00) [4]neodiX © (01.10.02 16:20)
Желание, оно конечно, похвальное, но может, самому поискать информацию ? EXEшник - это обычный файл, его можно читать, к примеру...Далее разбираться с форматом...
Le Taon (2002-10-01 16:32:00) [5]Зная HMODULE, ты можешь добраться до таблицы экспорта модуля.
Там ты найдёшь весь список экспортируемых ф-й с адресами и именами.
Но для этого тебе надо будет разобраться с форматом исполняемых файлов. Он в литературе описан, так что флаг тебе в руки.
neodiX (2002-10-01 16:20:00) [6]Во-первых, ради интереса
Во-вторых, если узнаю как делать это, далее будет легче разбираться с более сложными вещами, зная какие функцие есть и чо они делают.
А вообще, то что мне приходиться програмировать на Дельфи - это все не сложно, только вот я себе сам дополнительные проблемы создаю и опять таки ради интереса и улучшения своих знаний в делфи.
Игорь Шевченко (2002-10-01 14:07:00) [7]neodiX © (01.10.02 13:46)
> Мне надо програмно, самому с помощью делфи.
Можно глупый вопрос - нафига ?
Digitman (2002-10-01 13:58:00) [8]imagehlp.pas - вот твой инструмент на первое время)
neodiX (2002-10-01 13:46:00) [9]2 MBo>
Блин, совсем запарился!
Это я знаю (сам использовал).
Мне надо програмно, самому с помощью делфи.
MBo (2002-10-01 13:40:00) [10]>neodiX
Это отдельная программа в delph\bin
neodiX (2002-10-01 13:35:00) [11]2 МBо
А какой модуль в uses дописать, что бы тдамп распознать?
2 Megabass
Да програмно. Дело в том, что я когда то, как то это сделал, а сеичас непомню (склероз :)). Ну адресс я получал зная название, getprocaddress(), a как по аддресу узнать наз. функции?
Юрий Зотов (2002-09-27 22:54:00) [12]> Anatoly Podgoretsky
> Digitman
Причем даже и не спрашивают "а как заблокировать". Или "а где взять русский хелп". Видать, ни блокировка, ни хелп не нужны.
Anatoly Podgoretsky (2002-09-27 20:47:00) [13]Да тот инструмент представляет огромный интерес, такой что тратят время не только на ознакомление, но и на глубокую теорию
MegaBass (2002-09-27 20:18:00) [14]тебе че програмно надо узнать?
Digitman (2002-09-27 18:53:00) [15]Anatoly Podgoretsky
Зато другой "инструмент" некоторые male-персоны оч даже детально и всесторонне исследуют в "Потрепаться") ... особливо - в потенциальном действии) ... денно и нощно ... при барышнях ... да в подробностях и с рвением, достойных лучших применений))))
Anatoly Podgoretsky (2002-09-27 17:13:00) [16]Ну не фига народ не хочет изучать свой инструмент, хоть бы поинтерисовались, а что за программы им накидали в папочку
MBo (2002-09-27 17:12:00) [17]TDump