Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизКак узнать название всех функций в длл ке? Найти похожие ветки
← →
neodiX (2002-09-27 17:08) [0]Заранее всем спасибо за ответы.
← →
MBo (2002-09-27 17:12) [1]TDump
← →
Anatoly Podgoretsky (2002-09-27 17:13) [2]Ну не фига народ не хочет изучать свой инструмент, хоть бы поинтерисовались, а что за программы им накидали в папочку
← →
Digitman (2002-09-27 18:53) [3]Anatoly Podgoretsky
Зато другой "инструмент" некоторые male-персоны оч даже детально и всесторонне исследуют в "Потрепаться") ... особливо - в потенциальном действии) ... денно и нощно ... при барышнях ... да в подробностях и с рвением, достойных лучших применений))))
← →
MegaBass (2002-09-27 20:18) [4]тебе че програмно надо узнать?
← →
Anatoly Podgoretsky (2002-09-27 20:47) [5]Да тот инструмент представляет огромный интерес, такой что тратят время не только на ознакомление, но и на глубокую теорию
← →
Юрий Зотов (2002-09-27 22:54) [6]> Anatoly Podgoretsky
> Digitman
Причем даже и не спрашивают "а как заблокировать". Или "а где взять русский хелп". Видать, ни блокировка, ни хелп не нужны.
← →
neodiX (2002-10-01 13:35) [7]2 МBо
А какой модуль в uses дописать, что бы тдамп распознать?
2 Megabass
Да програмно. Дело в том, что я когда то, как то это сделал, а сеичас непомню (склероз :)). Ну адресс я получал зная название, getprocaddress(), a как по аддресу узнать наз. функции?
← →
MBo (2002-10-01 13:40) [8]>neodiX
Это отдельная программа в delph\bin
← →
neodiX (2002-10-01 13:46) [9]2 MBo>
Блин, совсем запарился!
Это я знаю (сам использовал).
Мне надо програмно, самому с помощью делфи.
← →
Digitman (2002-10-01 13:58) [10]imagehlp.pas - вот твой инструмент на первое время)
← →
Игорь Шевченко (2002-10-01 14:07) [11]neodiX © (01.10.02 13:46)
> Мне надо програмно, самому с помощью делфи.
Можно глупый вопрос - нафига ?
← →
neodiX (2002-10-01 16:20) [12]Во-первых, ради интереса
Во-вторых, если узнаю как делать это, далее будет легче разбираться с более сложными вещами, зная какие функцие есть и чо они делают.
А вообще, то что мне приходиться програмировать на Дельфи - это все не сложно, только вот я себе сам дополнительные проблемы создаю и опять таки ради интереса и улучшения своих знаний в делфи.
← →
Le Taon (2002-10-01 16:32) [13]Зная HMODULE, ты можешь добраться до таблицы экспорта модуля.
Там ты найдёшь весь список экспортируемых ф-й с адресами и именами.
Но для этого тебе надо будет разобраться с форматом исполняемых файлов. Он в литературе описан, так что флаг тебе в руки.
← →
Игорь Шевченко (2002-10-01 16:35) [14]neodiX © (01.10.02 16:20)
Желание, оно конечно, похвальное, но может, самому поискать информацию ? EXEшник - это обычный файл, его можно читать, к примеру...Далее разбираться с форматом...
← →
neodiX (2002-10-01 17:17) [15]2 Игорь Шевченко
Блин, точно читая саму длл"ку сразу после ее названия перечисляются все название функций которые онс экспортит. Это хорошо, но это самый легкий вариант ,я не говорю, что он плохой, но все же меня больше интересует как это будет через стандртные функции. Все иду разбираться дальше.
← →
Толик (2002-10-01 18:07) [16]нашел где-то на этом сайте, честно говоря ни автора ни ссылки я не помню. Говорю сразу - авторство не моё, но тем не менее, а может быть именно поэтому :) работает.
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-02 14:02) [17]2 Толик
Thanks, это точно то, что я искал.
Теперь буду сидеть разбираться что к чему.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c