Форум: "Потрепаться";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
Внизdll ka Найти похожие ветки
← →
alex134 (2002-12-17 00:16) [0]Мастера, нужна помощь!
Создайте пожалуйста библиотеку с всего одной функцией на экспорт.
Зачем? Я абсолютно не знаю Си, нет компилятора. Прошу не без высказываний типа: «срочно за буквари по Си, качай компилятор размером 200Мб тут…». Спасибо.
void ReplaceIATEntryInOneMod(PCSTR pszCalleeModName, PROC pfnCurrent, PROC pfnNew, HMODULE hmodCaller)
{
ULONG ulSize;
PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) ImageDirectoryEntryToData(hmodCallor, TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT, &ulSize);
if (pImportDesc == NULL)
return,; // в этом модуле нет раздела импорта
// находим дескриптор раздела импорм со ссылками
// на функции DLL (вызываемого модуля)
for (; pImportDesc->Name; pImportDesc++)
{
PSTR pszModName = (PSiR) ((PBYFE) hmodCaller + pImportDcsc->Name);
if (lstrcmpiA(pszModName, pszCalleeModName) == 0)
break;
}
if (pImportDesc->Name == 0)
// этот модуль не импортирует никаких функций из данной DLL return;
// получаем таблицу адресов импорта (IAT) для функций DLL PIMAGE_THUNK_DATA pThunk = (PIMAGE_THUNK_DATA) ((PBYTE} hirodCaller + pImportDesc->FirstThunk);
// заменяем адреса исходных функций адресами своих функций
for (; pThunk->u1.Function; pThunk++)
{
// получаем адрес адреса функции
PROC* ppfn = (PROC*) &pThunk->u1.Function;
// та ли это функция, которая нас итересует?
BOOL fFound = (*ppfn == pfnCurrent);
// см. текст программы-примера, в котором
// содержится трюковый код для Windows 98
if (fFound)
{
// адреса сходятся, изменяем адрес в разделе импорта
WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew, sizeof(pfnNew), NULL );
return; // получилось, выходим
}
}
// если мы попали сюда, значит, в разделе импорта
// нет ссылки на нужную функцию
}
Мое мыло : ideya@bigmir.net;
Кому интересно - код из Рихтера (отлов вызовов API-функций).
← →
alex134 (2002-12-17 00:21) [1]P.S
> Прошу не без высказываний
Понимать как "Прошу без высказываний "
:-)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c