winapi application schreiben ohne windows.h
-
Jochen Kalmbach schrieb:
Es geht nicht mal in Assembler... auch dort musst Du gegen die "kernel.LIB" linken...
Warum? Ich bin zwar noch nie auf die Idee gekommen, sowas auszuprobieren, aber was spricht dagegen, die Dll einfach in den Speicher zu laden, die Initilaisierungsfunktion anzuspringen, die Exporttabelle durchzugehen und die entsprechende Funktion anzuspringen? Das dürfte meiner Ansicht nach nicht so schwer sein.
Problematisch wärs aber u.u. das mit Dll´s vom System zu machen, die schon geladen sind.
-
Wie willst du die DLL in den Speicher laden, wenn du keine einzige .lib verwendest? CreateFile/ReadFile etc. sind in der KERNEL32.DLL implementiert, also muss man zumindest die KERNEL32.LIB linken. Und dann kann man genau so gut gleich LoadLibrary und GetProcAddress verwenden.
Was möglich sein sollte, ist die Adresse der bereits geladenen KERNEL32.DLL zu finden, und sich dann selbst die benötigten Funktionen zum Laden weiterer DLLs rauszusuchen. AFAIK sollte die KERNEL32.DLL in jedem Prozess verfügbar sein, auf wenn das PE File aus dem der Prozess erzeugt wurde keinen einzigen KERNEL32 Import enthält.
(Kann aber auch sein dass ich mich täusche, und nur die ntdll.dll immer verfügbar ist. Wobei ich vermute dass LoadLibrary und GetProcAddress sowieso in der ntdll.dll implementiert sind, d.h. es sollte reichen wenn diese verfügar ist.)
-
mit einem Assembler kann man ein Programm schreiben das auch ohne import libraries auskommt. Mittels klassischem shell code werden die APIs dann währende der Laufzeit ermittelt/geladen (über den PEB).
-
Nein, das kannst Du auch mit Assembler nicht.... zumindest nicht, wenn Du keine undokumentierte Funktionen von Windows verwendest...
Und auch wenn die DLL schon im Speicher ist (was der Fall ist) durch ASR kommst Du auch nur sehr schwer an die Adresse ran...
-
Jochen Kalmbach schrieb:
Und auch wenn die DLL schon im Speicher ist (was der Fall ist) durch ASR kommst Du auch nur sehr schwer an die Adresse ran...
Über TIB -> PEB -> PEB_LDR_DATA kommt man nach wie vor ohne Problem an den PE Header der kernel32.dll ran - bis auf TIB sind die Strukturen (eingeschränkt) dokumentiert.
-
Dann ist es ja noch einfacher, das sysenter selber aufzurufen...
Beides ist aber im Endeffekt nicht zielführend, da (teilweise) undokumentiert...
-
Leute, es ist doch Weihnachtszeit. Da sollte man sich mit so rein theoretisch und zugleich unsinnigen Fragen nicht so tief beschäftigen! :p Oma und Opa wissen, wie man eine Gans als Festessen zubereitet - und die doofen Enkel fragen, ob sie dafür einen Backofen brauchen oder auch die Mikrowelle nehmen können.
-
Jochen Kalmbach schrieb:
Dann ist es ja noch einfacher, das sysenter selber aufzurufen...
Beides ist aber im Endeffekt nicht zielführend, da (teilweise) undokumentiert...Du widersprichst Dich... bleib doch einfach ***** wenn Du keine Ahnung hast.
Einmal gehts auf keinen Fall und dann wiederum gehen 2 Sachen wobei ich über das "undokumentiert" nur schmunzeln kann. Ist das Dein ernst? Für einen der mit "Ich habe den Source-Code von MS-Systemen" rumprallt, hast du herzlich wenig verstanden! Dein Platz ist wohl eher im User-Mode.
-
berniebutt schrieb:
Leute, es ist doch Weihnachtszeit. Da sollte man sich mit so rein theoretisch und zugleich unsinnigen Fragen nicht so tief beschäftigen! :p Oma und Opa wissen, wie man eine Gans als Festessen zubereitet - und die doofen Enkel fragen, ob sie dafür einen Backofen brauchen oder auch die Mikrowelle nehmen können.
-
Kann die Administration und die Moderation dieses Forums offensichtlich pathologisch erscheinende Beiträge vielleicht woandershin umleiten?
daddeldu!edit: bezog sich auf jajaja