Autor Beitrag
Tomekk
Hält's aus hier
Beiträge: 11

Windows,(bisschen Linux)
Delphi4
BeitragVerfasst: Sa 15.02.03 18:27 
Hi zusammen,
ich hoffe ihr könnt mir helfen weil ich nämlich gerade mal wieder total am verzweifeln bin! :(
Ich habe folgendes Problem:

Ich habe in mein Programm den IE als Activx objekt eingebunden. Um jetzt etwas im INet zu versenden oder zu empfangen wird ja die wsock32.dll benutzt. Ich habe die wsock32.dll etwas umgeschrieben sodass immer wenn etwas gesendet oder empfangen wird ne extra Message an mein Programm gesendet wird und ich das, was alles von meinen Computer Rein und Raus geht, überwachen kann. Das funktioniert auch alles bestens nur ist das wenn ich alle Programmen überwache ziemlich unübersichtlich. Also hab ich mir follgendes ausgedacht: wenn ich die Veränderte dll nur in mein Delphi Programm reinlade wird mir auch nur das gemeldet was dieses eine Programm über wsock32.dll macht. Normalerweise muss man dafür ja die dll einfach in den selben Ordner wie das Programm verschieben und dann wird diese dll reingeladen anstat der dll in c:\windos\system. Tja aber Pustekuchen! :(
Geht nicht weil das Activx objekt sich standhaft gegen meine Versuche weigert sich mit meiner modifizierten Dll füttern zu lassen. Ich hab schon alles mögliche Versucht und irgendwann ist es mir schon mal gelungen als ich die WININET.dll in mein Programmverzeichniss kopiert habe da die wsock32.dll glaube ich über WININET aufgerufen wird. Aber jetzt geht es aufeinmal nicht mehr. Bin total ratlos! Vieleicht kann ja irgend jemand was mit meinem Problem anfangen. Bin auf alle Fälle für jede Idee dankbar!

mfg Tomekk
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 15.02.03 18:47 
Tomekk hat folgendes geschrieben:

Ich habe die wsock32.dll etwas umgeschrieben

Könntest du mir mal bitte sagen, wie du an die Sourcen von dieser DLL gekommen bist? Die gehört doch zu Windows.
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Sa 15.02.03 19:48 
Naja, ich habe auch mal einige DLLs umgeschrieben. Die Deklarationen der Funktionen hat man ja mit Delphi (z.B. Unit Windows -> USER32.DLL und KERNEL32.DLL) da hab ich einfach eine DLL gemacht, die alle Aufrufe der Funktionen MIT (!) Parameter protokolliert und dann die eigentliche DLL-Routine aufrief und das Ergebnis als Funktionsergebnis zurücklieferte.

Meine DLL hieß z.B. Kernel33.dll

Beispiel:
GetProcAddress an Kernel33.dll
GetProcAddress wird protokolliert (Parameter, Uhrzeit usw.)
GetProcAddress von Kernel32.dll (die Originalfunktion!) wird aufgerufen
Rückgabewert von GetProcAddress von Kernel32.dll wird als Rückgabewert von Kernell33.dll zurückgegeben


Et voilà: eine einfache Debug-DLL. Und dazu brauch man nicht mal die Sources!

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
Tomekk Threadstarter
Hält's aus hier
Beiträge: 11

Windows,(bisschen Linux)
Delphi4
BeitragVerfasst: Sa 15.02.03 21:10 
Wow hätte nicht gedacht das ihr so schnell antwortet!

Die Source von der Dll hab ich natürlich nicht! :D
Hab den Importtable so umgeschrieben das noch ne Dll von mir mit geladen wird und dann sobald eine zu überwachende Funktion aufgrufen wird hab ich den Anfang dieser Funktion so umgeschrieben das erst mal die Verarbeitungsfunktion in meiner dll abgearbeitet wird und dann die urprüngliche Funktion weiter läuft. Ich hoffe mal das das nicht irgendwie illegal ist! wegen copyright und so! :D

Aber trozdem habt ihr noch nicht auf meine Frage geantwortet wie krieg ich das hin das das Activx ding die dll nicht aus dem Default Verzeichnis c:\windows\system sondern aus dem Arbeitsverzeichnis des Programms läd?

Kennt ihr zufällig einfachere Methoden wie man API calls hooken kann?
Die Mehtode von DaRkFiRE ist ja im Prinzip ähnlich. Nur das ich halt den ASM code der Dll gerinfügig :wink: geändert hab und nicht gleich ne komplette Dll geschrieben hab.
Hab mal was gelesen das das mit Ring-0 Programmen (Treibern) einfacher geht aber hatte bisher keine Zeit mich in dieses Thema richtig einzuarbeiten.