Lowlevel
Lowlevel => OS-Design => Thema gestartet von: Homix am 14. March 2005, 19:57
-
hi,
ich wollt mal fragen, ob ihr wisst wie Windows so arbeitet oder dazu Dokus, Tutorials, Texte, usw.. habt ?
ich würd gerne mir mal so nen groben Überblick schaffen, wie Windows es realisiert (gewisse probleme ect ...).
auch wäre das .EXE PE Format oder Treiber interesant !
cu,
stefan2005
-
Generell ist es so, dass Microsoft nix Windows-internes verrät, schon nur wegen der wirtschaftlichen Situation, auf die ich hier nicht näher eingehen möchte.
http://www.nondot.org/sabre/os/files/Executables/PE.pdf
Da wird das (etwas komische und komplizierte) PE-Format ziemlich ausführlich behandelt.
-
Die beste Quelle für alle Infos rund um Windows sind in der MSDN enthalten, dort wird auch PE-Format beschrieben allerdings in English. Ich weiß nicht ob meine Frage hier passt, aber kennt jemand von euch MenuetOS? ich habe sehr viele Ãhnlichkeiten zwischen MenuetOS-Kernel und dem Linuxkernel festgestellt, ich meine allgemeines Design. Kann das sein?
:lol:
-
Ich kenn mich nicht mit MenuetOS aus, aber möglich wärs.
In Windows wird alles irgendwie getrennt: Für Port-Zugriffe und andere direkte Hardware-Zugriffe gibt es einen eigenen Teil (HAL - Hardware Abstraction Layer) usw. In wieweit das sinnvoll ist ist natürlich fraglich. Aber man muss eigenltich zwischen Win95/98/Me und Windows NT/200/XP/2003 trennen (Windows 1.0 - 3.11 lass ich mal weg). Die ersten basieren ja noch mehr oder weniger auf Dos und das ist das Design noch völlig anders.
-
Auf der Seite wird eine große Zahl an Dateiformaten dargestellt und erläutert. (Headerinfos, Formatierungen usw...)
http://www.wotsit.org/
-
Warum ein HAL sinnvoll lässt sich ganz einfach erklären - nur so hat ein und der selbe Treiber überhaupt eine Chance Veränderungen im Kernel zu überdauern ohne ständig angepasst werden zu müssen und zwischen verschiedenen Architekturen doch noch portabel zu sein.
-
Den Grund hab ich wohl übersehen :? Aber wie macht das Windows? Werden da auch Messages gesendet oder werden die Funktionen direkt aufegrufen. Also hal.dll hab ich mal näher betrachtet und sie beinhaltet unter anderem diese Funktionen:
READ_PORT_BUFFER_UCHAR
READ_PORT_BUFFER_ULONG
READ_PORT_BUFFER_USHORT
READ_PORT_UCHAR
READ_PORT_ULONG
READ_PORT_USHORT
WRITE_PORT_BUFFER_UCHAR
WRITE_PORT_BUFFER_ULONG
WRITE_PORT_BUFFER_USHORT
WRITE_PORT_UCHAR
WRITE_PORT_ULONG
WRITE_PORT_USHORT
Werden die direkt vom Treiber aufgerufen? Und könnte man die aus einem eigenen Programm aufrufen oder würde Win das stoppen?
-
Den Grund hab ich wohl übersehen :? Aber wie macht das Windows? Werden da auch Messages gesendet oder werden die Funktionen direkt aufegrufen. Also hal.dll hab ich mal näher betrachtet und sie beinhaltet unter anderem diese Funktionen:
READ_PORT_BUFFER_UCHAR
READ_PORT_BUFFER_ULONG
READ_PORT_BUFFER_USHORT
READ_PORT_UCHAR
READ_PORT_ULONG
READ_PORT_USHORT
WRITE_PORT_BUFFER_UCHAR
WRITE_PORT_BUFFER_ULONG
WRITE_PORT_BUFFER_USHORT
WRITE_PORT_UCHAR
WRITE_PORT_ULONG
WRITE_PORT_USHORT
Werden die direkt vom Treiber aufgerufen? Und könnte man die aus einem eigenen Programm aufrufen oder würde Win das stoppen?
ich denke mal das ein treiber die aufrufen kann, ein programm aber nicht
-
Werds mal testen ^^. Vielleicht gehts über rundll32.exe. Das ist ein kleiner Teil von Windows und man kann mit dem Ding Funktionen aus einer DLL aufrufen ohne extra ein Tool zu schreiben. Per Parameter gibt man den Dateinamen und die Funktion an und das wars. Wie das mit Parametern für die Funktion oder dem Rückgabewert aussieht weiß ich aber noch nicht.
Ansonsten könnte das DDK interessant sein.
-
Wenns ne DLL ist kann dein Programm die bestimmt in seinen Addressraum laden - auf Ring 3, um dann beim ersten Auftreten von in/out Instruktionen gekillt zu werden!
-
Werds mal testen ^^. Vielleicht gehts über rundll32.exe. Das ist ein kleiner Teil von Windows und man kann mit dem Ding Funktionen aus einer DLL aufrufen ohne extra ein Tool zu schreiben. Per Parameter gibt man den Dateinamen und die Funktion an und das wars. Wie das mit Parametern für die Funktion oder dem Rückgabewert aussieht weiß ich aber noch nicht.
Ansonsten könnte das DDK interessant sein.
http://www.wintotal.de/Tipps/Eintrag.php?RBID=2&TID=184&URBID=7
der seite nach werden parameter nach einem leerzeichen angehängt und durch kommas getrennt
-
hi mit rundll32 wirds nicht klappen. das tool kann nur spezielle dlls und da auch nur spezielle funktionen ausführen. (schnickschnack wie systemsteuerung öffnen, webseite öffnen, netzwerkumgebung öffnen etc...) IO-Funktionen werden wohl nicht dazu gehören. Außerdem ist rundll32 auch kein godlike tool. es wird genau wie jedes andere programm, dass versucht ohne berechtigung auf die io-ports (sei es nun mit oder ohne dll) gekillt werden. so wie legend es beschrieben hat, wird es rundll32 auch ergehen.
-
Ok. Ich habs getestet: Wenn ichs so starte: C:\WINDOWS\system32\rundll32.exe HAL.dll,READ_PORT_UCHAR krieg ich den Fehler "Fehler beim Laden von HAL.dll Unzulässiger Zugriff auf einen Speicherbereich". Also so gehts nicht.
-
wäre es möglich das ganze betriebssystem(Windows) zu deassembeln?
-
Hiho
Also Theoretisch ist es möglich. Mir fällt da spontan ein Programm namens SoftICE ein. Das ist ein Runtime Debugger der sich auf den Ring 0 aufschaltet. Keine Ahnung wie das Programm das genau macht aber es funzt. Somit könntest du alle ASM befehle sehen, die z.B. ein API aufruf auf den Prozessor los lässt. aber glaube mir. Das ist nicht lustig.
-
hi,
es ist ja sogar möglich Windows auf Bochs laufen zu lassen (installieren)
dauert halt nur gewaltig lange, vlt kann man so auch Assemblerbefehle sehen.
cu,
stefan2005
-
Geht viel einfacher
Win2k Source beim Esel (eMule) ziehen ^^
-
Das ist aber garantiert illegal ...
-
... genauso wie das disassemblieren
-
In den USA ist Reverse Engineering unter sehr bestimmten Vorraussetzungen sogar legal. Wie das in Deutschland ist, da weiss ich jedoch nichts.
-
Aber wer will schon die Sourcen von einem OS das bekannt für seine Abstürze ist ;-) ? Lieber in die Sources von ReactOS oder Wine schauen, ist wenigstens legal und kost auch nix :mrgreen:
-
Und vonwegen eurer Idee Source beim Esel ziehn, wär sinnlos, is nämlich nich der komplette source... nur bestimmte unkommentierte teile, und damit was anzufangen, naja ^^
-
Woher weist du das denn :D ?
-
Wo ich das letzte mal beim Esel geschaut (Nur geschaut!!!!) hab war der Source von Win2k noch 200 MB groß.
Wie kann eine Firma auf dieser Welt nur 200 Megabyte unkommentierten, unnützen, unbrauchbaren und unübersichtlichen Quelltext zusammenkopieren? (Ich sage bewusst zusammenkopieren ^^)
-
@N00B: naja also es haben leute geschafft was damit anzufangen. irgendeine lücke beim verwalten von bitmap (wenn ich mich recht errinnere) ist aufgedeckt wurden, indem sich die leute den code angeschaut haben.
Wie kann eine Firma auf dieser Welt nur 200 Megabyte unkommentierten, unnützen, unbrauchbaren und unübersichtlichen Quelltext zusammenkopieren? (Ich sage bewusst zusammenkopieren ^^)
indem sie es einfach tun? ist ja nicht schwer, wenn man genug codesklaven hat, kostet ein paar mille, aber passt scho, und funktionieren tuts auch noch einigermaßen :roll:
den windows source code gibt es übrigens auch kostenlos, legal und (fast) vollständig: Shared Source (http://www.microsoft.com/resources/sharedsource/Licensing/default.mspx) ... allerdings nur für ausgewählte personen ("most valuable professionals")
einige unis und firmen haben z.b. durch dieses programm auch einblick in den code
-
Ich denke schon, dass 200 MB Source ausreichen. Jeder der Programmierer schreibt dann pro Jahr etwa ein Megabyte zusammen, dann wird alles zusammengelegt und kompiliert. Was dann nicht richtig funktioniert, wird halt mit dem nächsten Servicepack behoben.
Da die Microsofties eh nichts kommentieren, gibt's auch keine Kommentare im Source :D - was fehlt denn, wenn ich mal fragen darf? [Ich wuerde mangels C-Kenntnissen eh nicht durchsehen, aber das ist ne andere Sache :( ]
Auch Teile des Sources sind interessant. Man ueberlege sich nur mal, dass beispielsweise ... kA eben Bitmaps oder irgendwelche anderen Sachen, bei denen man es nicht vermutet, "unwichtige" Sachen also, eine Luecke drin ist. Wenn man dort das passende Tool dazu setzt und die Luecke ausnutzt, kann man schon einiges erreichen. Sei in der Decodierung von Bildern ein Fehler, kannst du jedes Bild und jeden Zugriff darauf umleiten ... und irgendein Bild wird ja mit Systemrechten geladen (Bootscreen, Grafiktreiber, Systemicons) und du kannst - genug Ahnung vorausgesetzt - ein Programm mit diesen Rechten benutzen.
Wobei das bei Windows bisschen egal ist, da eh 75% der Windowsuser (2k, xp) als Administrator angemeldet sind, da sonst diverse Software nicht funktioniert (elegant ausgehebelt, wa?)
@Legend: Unter welchen Bedingungen ist das erlaubt?
Ich hab mal ein Programm geschrieben und den Source danach weggeschmissen. Steht als Lizenzinfo drin, dass disassemblieren, dekompilieren oder so alles erlaubt ist. Ist das dann noch im Sinne des Gesetzes? :D Sonst ist es glaube ich verboten laut Copyright und geistiges Eigentum und so, aber Ahnung hab ich davon nicht.
Ich hab schon wieder viel zu viel geschrieben :(
Svenska
-
is einfach mein wissensstand das es unvollständig ist, stand mal irgendwo (weiß aber net wo genau, heise wars jedenfalls nicht...)
um was damit anzufangen kanns ja trotzdem reichen, is ja nich alles über alle dateien verstreut ;)
-
Es soll nun mal nur der Kernel und evtl. noch Win32 sein. Die GUI und eigentlich alles andere was darauf auf baut gehören wohl nicht dazu.
Und ich finde leider keinen brauchbaren Link mehr zum Reverse Engineering :(
-
Ich kenn da aber etwas nettes:
http://rozinov.sfs.poly.edu/papers/bagle_analysis_v.1.0.pdf
Hier wird beschrieben wie man beim Reverse Engineering des Bagle Wurmes vorgegangen ist. SEHR INTERRESSANT ;-)
-
viele interessante dinge gibts auch unter www.sysinternals.com, www.rootkit.com, www.osronline.com, www.ntdev.org, http://www.pcausa.com oder www.win200mag.com (dort am besten mal nach russinovich suchen) und nicht zu vergessen die gute ddk doku, fals man da ueber die msdn rankommt.
auch bei phrack gibts einige dingense ueber system services, physical memory....
zudem auch noch von relevanz ist wohl das buch windows 2000 internals (russinovich und solomon) und Undocumented Windows 2000 Secrets (was wohl er schwer zu bekommen sein wird)
zudem ist auch immer mal ein blick in die strct function der kdx862??.dll vom windbg gut um zu sehen was sich den so an den strukturen geaendert hat.