Quote:
Originally Posted by link
Hast du das zufällig schon einmal gemacht bzw. einen funktionierenden Code?
|
Nö
Quote:
Originally Posted by link
Ich hab's mir nämlich gerade mal kurz angeschaut und anscheinend wird weder die Datei reloziert, noch werden EntryPoint oder Imports berücksichtigt, wenn das Dll-Flag nicht gesetzt ist.
|
Wenn es gesetzt sein sollte, funktioniert es zwar, nur lässt sich die Datei dann nicht mehr als Exe ausführen..[/QUOTE]
Ja sehe ich leider auch gar - außer ZwMapViewOfSection macht er Windoofsloader da nicht viel, keine Relocations und keine Imports.
Und wieder so ein Fall von:
Was nicht getestet wurde - geht nicht! :D
Nun das war nur so'ne fix Idee und der 'Test:
Zum Ausprobieren habe ich mir da irgend eine *.Exe nach *.dll umgenannt und dann mal geschaut war Rechtklick\'Reg'( <= keine Strandfunktion; eigene Verknüpfung ;) ) also regsvr32.exe <mit der *.dll umgenannt Exe> sagt.
Soso LoadLibrary erfolgreich ... -> könnte funktionieren.
Quote:
Originally Posted by link
Hab so mal versucht zu unterscheiden, als was es geladen wurde:
(bringt nur nicht viel, wenn man halt immer wieder die Characteristics patchen müsste)
|
Ja diese Lösung find ich auch doof - da ist das mit dem Tempfile schon 'schöner'.
Anstelle des TempFiles kann man ja mal mit einer '
Named Pipe' experimentieren. Ziel ist das dabei nicht sinnlos auf der Festplatte rumgeschrieben wird, sondern alles nur im Speicher passiert.
[Only registered and activated users can see links. Click Here To Register...]
So das Teil lässt sich auch mit CreateFile öffnen und mit ReadFile/WriteFile schreiben.
Zu dem oberen Beispiel gibt es auch noch einen Clientpart. Man kann jedoch auch so ein wenig damit experimentieren
"copy con \\.\pipe\mynamedpipe"
z.B. Bringt keine Fehlermeldung, wenn das Multithreaded Pipe Server Beispiel läuft.
Bei LoadLibraryA("\\.\pipe\mynamedpipe") sieht es jedoch wieder schlecht aus.
Hab das mit Ollydbg ein wenig 'verfolgt' - der kommt leider nicht mal bis zu der Stelle wo der die dll mit ZwOpenFile öffnet, weil er irgendwie schon früher in ntdll!LdrpCheckForLoadedDll den 'Abgang' macht - RtlDosSearchPath_UEx() passt irgendwie der Dateiname nicht.
Damit Ollydbg so interne Name wie 'LdrpCheckForLoadedDll' anzeigt muss die 'ntdll.pdb' im selben Verzeichnis wie ntdll.dll sein. So lade ich *.pdb runter:
c:\Programme\Debugging Tools for Windows (x86)\dbh.exe -n ntdll.dll
DBGHELP: ntdll - public symbols
T:\SymbolsCache\ntdll.pdb\CEFC0863B1F84130A11E0F54 180CD21A2\ntdll.pdb
^-und die dann nach Windows\system32 kopieren
Quote:
Originally Posted by link
PS: Jetzt mal ernsthaft.. wenn du auf Deutsch schreibst, verschluckst du des Öfteren Silben oder ganze Wörter.. im Englischen scheint dir das nicht zu passieren..
|
Tja die eigenen Fehler sind oft am spannendsten. ;) Und durch Fehler wird man klug - deswegen kann man nie genug machen. Und Programmieren passt das super rein: 10% Programmcode schreiben - 90% Fehlersuche.
Nun viel dagegen machen kann ich da auch nicht - außer aufpassen und alles wenigsten vor dem Postern noch einmal durchlesen. Nun im Englischen hab ich übrigens öfter so 'Gleichklangfehler', als wie z.B. 'how' mit 'who' verwechseln. <-Wo ich dann später sage ist doch total unlogisch und dabei hatte ich doch auch 'how' gedacht (und dann doch 'who' geschrieben).