Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
14-15257
linker
2002-12-15 04:44
2003.01.06
Delphi 2!


1-15046
Prizrak-ppm
2002-12-24 19:03
2003.01.06
Где правильно распологать вызов процедур, чтобы форма не висела?


14-15240
Viktor1
2002-12-10 14:56
2003.01.06
Надо менять комп!?


14-15207
Anatoly Podgoretsky
2002-12-15 10:50
2003.01.06
Именинники 15 декабря


1-15043
Delphin
2002-12-23 20:24
2003.01.06
?????? вместо кириллицы!




   Наверх