Witam, chyba gdzies miesiac temu albo i pozniej zwrocilem sie z prosba do was o pomoc w stworzeniu funkcji hook'owej, ktora by po prostu zamieniala kod danej funkcji na kod wlasnej funkcji. Tej pomocy udzielił mi użytkownik MSM, do ktorego kieruje jak najwiekszy ukłon :) Operacja ta opierala sie podawaniu adresu funkcji zamienianej oraz adres tej która tą funkcję oryginalna podmieniała.
Teraz chcialbym uzyskac co nie co inny efekt, a mianowicie: gdy FUNKCJA ORYGINALNA zostanie WYWOLANA i WYKONA WLASNY KOD, to po tej czynnosci ma WYWOLAC FUNKCJĘ, która zostala pod nią przypisana. Taka metoda nazywa sie "inline hook function" albo coś w ten deseń, tyle, że z dodatkiem wlasnego kodu.
Przyklad.
void OryginalnaFunkcja()
{
printf("Jestem oryginałem i nie dam się podrobić\n");
}
void FunkcjaDodajacaKod()
{
printf("Jestem funkcją ktora doczepia wlasny kod do innej funkcji\n");
}
int main()
{
HOOK_FUNCTION(OryginalnaFunkcja,FunkcjaDodajacaKod); //Szablon funkcji (dodawanie wlasnego kodu do oryginalnej funkcji)
//Wywolanie funkcji oryginalnej
OryginalnaFunkcja();
cin.get();
return 0;
}
W konsoli powinno wypisać:
Jestem oryginałem i nie dam się podrobić
Jestem funkcją ktora doczepia wlasny kod do innej funkcji
Pewnie Od razu powiecie zebym zastosowal dziedzicznosc, ale mi chodzi tu o ingerencje w obcy kod zrodlowy, do ktorego nie mam dostepu. Mam dostep, ale tylko w sposob wspolnej pamieci (Dynamic-Link Library DLL). Czyli operowanie na przestrzeni adresowej. Mam nadzieje, ze mi ktos pomoze to zrobic, dzieki :)