1 - napisz dllke o identycznym interfejsie zewnetrznym jak ta oryginalna, dzialajaca w ten sposob, ze wszystkie Twoje funkcje beda wolaly swoje odpowiedniki w oryginale, poza ta jedna funkcja ktora chcesz podmienic. nastepnie podrzuc programowi swoja dllke. pamietaj ze oczywscie Twoja dllka musi "widziec" oryginalna, zeby moc poprawnie udawac (a raczej: filtrowac) jej dzialanie :)
2 - najprosciej uzyc debuggera i wstawic breakpointa.. jak chcesz zeby to robil Twoj program - mozesz sprobowac uzywac API debuggingu pod windowsami. mozesz tez proces-ofiare suspendowac, zmapowac sobie obraz jego stron z kodem, wstrzeilc mu jakis swoj kod, wyszukac sekcje importow, podmienic tymczasowo adres jakiejs czesto uzywanej funkcji na adres wstrzelonego bloczku kodu i tyle. twoj bloczek kodu po pierwsze: musi z punkttu widzenia ofiary zachowywac sie dokladnei jak funkcja ktora ofiara chciala wywolac, po drugie - moze robic w obrebie procesu-ofiary co Ci sie zamarzy. to tak w skrocie. w praktyce wyglada to bardziej skomplikowanie bo dochodzi wiele czesto nietrywialnych szczegolow