Показать сообщение отдельно

  #7  
Старый 25.04.2019, 08:39
#Rin
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами: 5663255

Репутация: 183


По умолчанию

Цитата:
Сообщение от CleanLegend  

HMODULE kernel = LoadLibrary("Kernel32.dll"); // Получаем адрес kernel32 myBeep.pAdr = (DWORD)GetProcAddress(kernel,"Beep"); // получаем адрес функции Beep FreeLibrary(kernel);
Может windows и гарантирует загрузку такой системной библиотеки по одинаковому адресу. Но адрес библиотеки в разных процессах может и будет отличаться.

Поэтому что бы найти адрес функции относительно другого процесса, нужно:

Использовать CreateToolhelp32Snapshot, Module32First, Module32Next для нахождения адреса библиотеки в чужом процессе.

Затем загрузить туже библиотеку в свой процесс через LoadLibrary.

А после найти адрес функции относительно своего процесса через GetProcAddress.

Затем просто вычисляем: адрес_библиотеки_в_чужом процессе + адрес_функции_в_нашем_проце ссе - адрес_библиотеки_в_нашем_пр оцессе.
 
Ответить с цитированием