Datei kopieren in Inline-asm (VC++ 2010)
-
Ich möchte in Windows 7 64bit OHNE die CopyFile()API und OHNE Datei-Handlings Bibliotheken eine Datei kopieren. Wie?
Wie laufen diese Funktionen intern in etwa ab? Ist das nachbildbar?
Danke.
-
Schnapp' dir einen Debugger fuer Windows wie ollydbg und schaue es dir selbst an.
Kurzfassung: Funktionsargumente wie Dateiname in Strings oder Handle werden kurz geprueft, ggF. konvertiert und kopiert und die wirklich interessanten Sachen passieren dann in syscalls, dh. geschuetzte Funktionen im Kernel, in die du nur in einer VM mit reinschauen kannst und die in jeder Windows-Version schoen anders funktionieren. Siehe z.B. diese kleine Liste hier:
http://dev.metasploit.com/users/opcode/syscalls.htmlWikipedia kennt das Thema auch:
https://secure.wikimedia.org/wikipedia/de/wiki/SystemaufrufDiese Wrapper nachzubauen waere reichlich witzlos, es sei denn, du willst unter allen Umstaenden vermeiden, auch nur gegen eine einzige dll zu linken.
Wenn du die syscalls nachbauen willst, muesstest du den Windows-Kern nachbauen. Haben schon ganze Teams ueber Jahre versucht, hat auch noch nicht sonderlich gut geklappt...
-
Sind ZwCreateFile, ZwReadFile und ZwWriteFile akzeptabel?
-
asmfreak schrieb:
Ich möchte in Windows 7 64bit OHNE die CopyFile()API und OHNE Datei-Handlings Bibliotheken eine Datei kopieren. Wie?
Wie laufen diese Funktionen intern in etwa ab? Ist das nachbildbar?
Danke.
Derartige Internas lassen sich recht gut unter Linux nachvollziehen, da der Sourcecode vorhanden ist und das Debugging bis in die Kernelinnereien möglich ist.
Ähnlich ist es mit dem ganzen Netzwerkthema.
Das dabei erlangte Wissen lässt sich gut auf anderen Betriebsysteme übertragen.
Window/Linux/Mac sind sich nämlich unter der Haube ähnlicher als man denkt. Die konkreten Realisierungen von einzelnen Teilen sind zwar unterschiedlich, verfolgen aber den gleichen Zweck.