c++ dll zwischenschalten
-
hi ich habe mal 1 frage zu dll s:
ich habe mir folgender überlegt:
aslo ich habe ein prog. (mit VC++ kompiliert)dass eine dll nutzt, und ich hatte mir nun überlegt, um die dll nutzung zu überwachen, schreibe ich meine eigene dll, dei die selben funktionen Exoprtiert, wie das original. nun nenne ich das original um. und meine dll nenn ich in den ersetn namen der original dll um.
so, nun müsste das prog. doch meine dll aufrufen oder? und jetzt lasse ich einfach meine dll die funktionsaufrufe an die original wierleiten, sodas immernoch die originall aufgerufen wird, ich aber jetzt Protokollirtren kann wer wann aufgerufen(und mir welchen Argumenten) wird.geht das ?
-
Ja.
-
thx erstmal
so und weiss jmd wie ich die Exports table oder wie das heisst auslesen kann?
ich wüsste nur dumpbin.exe. aber ich mein innerhalb des codes ob es da iwelche funktionen gibt in c++ oder on c#, damit ich ein prog schreiben kann dass mir den dazu nötigen code generiert
-
Hallo
Wenn du den Quellcode eines Programmes hast, das die Original-DLL benutzt, dann solltest du doch auch über die normalen Header der Original-DLL verfügen?
Ansonsten kannst du Programme wie Dependency Walker benutzen, um die öffentliche Schnittstelle einer DLL auszulesen.Dieses Vorgehen wird übrigens auch zum Cracken von Software benutzt, unter dem Begriff DLL Injection.
bis bald
akari
-
naja eig wollt aich ein funktion, die ich von meine prog aus aufrufen kann die mir alle exportierten funktioine einer dll zurückgibt, sodass ich am ende in mein prog nur den namen der dll eingeben muss un es erzeugt mir von selber sozusagen einen c++ header für diese dll, gibt es sowas ?
-
Hallo
Ja natürlich, auch Dependency Walker benutzt nur die offen verfügbaren WinAPI-Funktionen. Weiteres wirst du im WinAPI-Forum erfahren.
bis bald
akari
-
So etwas gibt es nicht.
Wenn die Funktionen mit einer C++ SIgnaur versehen sind, dann könnte man es machen. Für reine C Funktionen kann man ohne Doku/Header-Datei nichts anfangen.
-
Jochen Kalmbach schrieb:
So etwas gibt es nicht.
Wenn die Funktionen mit einer C++ SIgnaur versehen sindsind sie in meinem fall
-
bzgl. name mangeling / name decoration:
http://support.microsoft.com/kb/126845/en-us