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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-15281
BlackTiger
2002-12-17 00:21
2003.01.06
Не про Дельфи, а про PHP, но может кто подскажет.


4-15363
lds
2002-11-19 14:15
2003.01.06
Как вызвать диалог выбора файлов?


1-15067
Ranikin
2002-12-25 11:38
2003.01.06
ActionList - программное изменение картинки


6-15205
X-shadow
2002-11-07 05:47
2003.01.06
Отправка письма


14-15220
Calm
2002-12-15 16:27
2003.01.06
Трассировка. Как выполнить прогу до конца метода?