Ich nehme an, wenn Sie eine DLL einhängen, die Sie die Exporte dieser DLL haken?
In diesem Fall können Sie eine einfache IAT (und möglicherweise EAT wenn nötig) Hook durchführen. Der Vorteil von IAT/EAT Hooks gegenüber Detours ist, dass die Anwendung und Entfernung der Hooks zu 100% sicher ist (da Sie keinen Code ersetzen, ersetzen Sie einen Pointer, so dass es keine Chance auf ein Rennen gibt Bedingung, und es ist leicht, auch die nativen x64-Prozesse zu haken (was Microsofts Detours-Bibliothek nicht tun kann, wenn Sie nicht 10 grand für die Prof-Edition herausgeben).
Ja, es gibt 3rd Party Umleitungsbibliotheken, die X64-Unterstützung haben und kümmern sich um die meisten der Race-Bedingungen und was nicht, aber einige von ihnen sind wirklich teuer, und andere sind nur ein Schmerz zu arbeiten.
IAT/EAT-Hooks sind schnell und einfach, und es gibt Beispielcode für die Durchführung von ihnen im Buch "Windows via C/C++" (zusammen mit einer Vielzahl von Stellen auf den Interwebs).
Dies ist eine ziemlich generische Antwort, die ich kenne, aber es ist schwer, mehr ins Detail zu gehen, ohne weitere Informationen darüber, was Sie genau machen wollen.
Versuchen Sie, eine DLL in Ihrem eigenen Prozess oder eine DLL, die in einen anderen Prozess geladen wurde, anzuhängen? –
Die verfügbaren Strategien zum Anhängen aller Funktionen, die in einer DLL verwendet werden, unterscheiden sich von den Strategien zum Anhängen nur einer der verwendeten Funktionen. Out-of-Process-Strategien unterscheiden sich von Prozessstrategien. Könnten Sie etwas mehr Details geben? –
Ja, versuchen, eine DLL von einem anderen Prozess zu haken. wie etwas ähnliches wäre zum Beispiel wie das Anhängen der opengl32.dll-Datei und Abfangen von glBegin..glEnd und etc ... – enuree