Daca stii semnatura functiei, poti sa inlocuiesti dll-ul programului cu unul facut de tine care te anunta cand se apeleaza functia si apoi ruleaza functia din dll-ul original. Practic faci un "wrapper" la acel dll
Daca nu stii semnatura functiei e mai complicat. Teoretic poti sa dezasamblezi programul si sa inlocuiesti toate apelurile catre acea functie din dll cu apel catre functia ta care te anunta si apeleaza functia originala. Aici nu mai trebuie sa stii semnatura functiei, doar muti cursorul de executie acolo unde e deja incarcata functia in memorie.
Sau poti incerca sa faci un program care monitorizeaza accesul la acel fisier. Cand se apeleaza functia din dll se citeste din fisier. Problema este ca s-ar putea sa mearga doar prima data cand acceseaza fisierul, in rest tinandu-l in memorie.
Dupa cum vezi, solutiile nu sunt tocmai simple