{"id":180936,"date":"2016-08-29T01:37:00","date_gmt":"2016-08-28T23:37:00","guid":{"rendered":"http:\/\/www.borncity.com\/blog\/?p=180936"},"modified":"2022-06-28T12:42:55","modified_gmt":"2022-06-28T10:42:55","slug":"windows-kernelmode-und-usermode-treiber-erklrt","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2016\/08\/29\/windows-kernelmode-und-usermode-treiber-erklrt\/","title":{"rendered":"Windows Kernelmode und Usermode-Treiber erkl&auml;rt"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2015\/01\/win102.jpg\" width=\"58\" height=\"58\" align=\"left\" \/>Anfang des Monats hatte ich im Artikel <a href=\"https:\/\/borncity.com\/blog\/2016\/08\/01\/windows-10-version-1607-treiber-signierung-gendert\/\">Windows 10, Version 1607: Treiber-Signierung ge\u00e4ndert<\/a> darauf hingewiesen, dass sich bei der Akzeptanz von Kernelmode-Treibern etwas \u00e4ndert. Da es nachgefragt wurde, mal ein paar erkl\u00e4rende Worte.<\/p>\n<p><!--more--><\/p>\n<h3>Kernel- und Usermode im \u00dcberblick<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ssl-vg03.met.vgwort.de\/na\/6b7a12e371624eb6b6360c4fc43392e6\" alt=\"\" width=\"1\" height=\"1\" \/>F\u00fcr nicht so technik-affine Blog-Leser ein kurzer Exkurs, was man und Kernel- und Usermode versteht. In Anlehnung an <a href=\"https:\/\/blog.codinghorror.com\/understanding-user-and-kernel-mode\/\" target=\"_blank\" rel=\"noopener\">diesen Artikel<\/a>, der wesentlich tiefer geht, hier ein paar Erkl\u00e4rungen. Der in einem Betriebssystem ausgef\u00fchrte Programmcode l\u00e4uft in modernen Betriebssystemen in zwei Modi.<\/p>\n<ul>\n<li><b>Kernel Mode:<\/b> In diesem Modus wird der Betriebssystemkern ausgef\u00fchrt. Der Code in diesem Modus hat vollst\u00e4ndigen Zugriff auf die unterlagerte Hardware und den Arbeitsspeicher. Hier sollte nur vertrauensw\u00fcrdiger Code ausgef\u00fchrt werden.<\/li>\n<li><strong>User Mode:<\/strong> Dieser Modus ist Anwendungsprogrammen und Hilfstools des Betriebssystems vorbehalten. Er l\u00e4uft mit reduzierten Berechtigungen und kann weder auf die Hardware noch auf den Speicher zugreifen. Vielmehr m\u00fcssen im User Mode \u00fcber API-Aufrufe Zugriffe auf Speicher oder Hardware sowie die Betriebssystemkomponenten vom Kernel angefordert werden.<\/li>\n<\/ul>\n<p>Die Verwaltung dieser Modi erfolgt dabei direkt durch die CPU, die einen Wechsel der Anwendungen aus dem User-Modus in den Kernel Modus und dessen Privilegien verhindern soll. Ziel von Hackern ist es, Sicherheitsl\u00fccken aufzusp\u00fcren, die genau diesen Wechsel doch zulassen. Gelingt es, Schadcode \u00fcber Treiber in das Betriebssystem einzuschleusen, kann dieser quasi alles tun.<\/p>\n<h3>Was \u00e4ndert sich bei Windows 10 Anniversary Update?<\/h3>\n<p>Microsoft hat bekannt gegeben, dass ab Windows 10 Anniversary Update Kernelmode-Treiber bei Neuinstallationen digital von Microsoft signiert werden m\u00fcssen. Fr\u00fcher konnten Treiber auch von anderen Stellen signiert werden. Nicht von Microsoft signierte Kerneltreiber werden beim Betriebssystemstart nur noch geladen, wenn sie unbedingt erforderlich sind. In zuk\u00fcnftigen Windows 10 Builds sollen die Anforderungen nochmals versch\u00e4rft und die Treiber auch nicht mehr geladen werden. Die Details habe ich im Artikel <a href=\"https:\/\/borncity.com\/blog\/2016\/08\/01\/windows-10-version-1607-treiber-signierung-gendert\/\">Windows 10, Version 1607: Treiber-Signierung ge\u00e4ndert<\/a> beschrieben.<\/p>\n<p>Nicht alle Hersteller m\u00f6chten die Treiber von Microsoft signieren lassen, weil dies Aufwand, Zeit und Geld kostet. Anwender, die auf solche Windows 10-Treiber angewiesen sind, laufen dann m\u00f6glicherweise in ein Problem. Was aber viele Nutzer als Frage umtreibt: Welches Treiber eigentlich den Kernelmode ben\u00f6tigen? Muss meine Maus, mein Scanner oder mein Drucker treiberm\u00e4\u00dfig von Microsoft signiert sein?<\/p>\n<h3>Was geh\u00f6rt zu den Kernelmodetreiber?<\/h3>\n<p>Gl\u00fccklicherweise gibt es Treiber, die im Usermode statt im Kernelmode ausgef\u00fchrt werden. Alles was kritisch f\u00fcr die Performance und Stabilit\u00e4t des Betriebssystems ist, l\u00e4uft im Kernelmodus. Grund: Der Transfer vom Usermode in den Kernelmode ist aufw\u00e4ndig. Aber welche Treiber geh\u00f6ren zum Usermode und welche zum Kernelmode.<\/p>\n<p>Microsoft hat <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff564864(v=vs.85).aspx\" target=\"_blank\" rel=\"noopener\">dieses Dokument<\/a> zur Entwicklung von Kernelmode-Treibern ver\u00f6ffentlicht. Dort werden einige Vertreter genannt: Alles, was mit Disk-I\/O, Zugriffen auf Hardware, die Speicherverwaltung etc. zu tun hat, erfolgt \u00fcber Kernelmode-Treiber. Auch der WDM-Audio-, der WDM-Grafiktreiber und die Druckertreiber laufen im Kernelmode.<\/p>\n<p>Alle anderen Treiber laufen dagegen im Usermode unter Kontrolle des User-Mode Driver Framework (UMDF). Auch hier hat Microsoft <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff554836(v=vs.85).aspx\" target=\"_blank\" rel=\"noopener\">ein Dokument<\/a> ver\u00f6ffentlicht. Dort findet sich die Infomation:<\/p>\n<blockquote><p>File system drivers, display drivers, and print drivers cannot be UMDF drivers.<\/p><\/blockquote>\n<p>Alle Treiber, die unter dem UMDF ausgef\u00fchrt werden, laufen also im Usermode. Diese Treiber sind also von der neuen Treibersignierung nicht betroffen.<\/p>\n<p>Die Verwaltung erfolgt \u00fcber den Dienst\/Prozess <em>wudfsvc (siehe <a href=\"https:\/\/web.archive.org\/web\/20171203180022\/http:\/\/www.winfaq.de\/faq_html\/Content\/tip2000\/onlinefaq.php?h=tip2453.htm\" target=\"_blank\" rel=\"noopener\">hier<\/a>)<\/em>. Dieser f\u00e4llt schon mal auf, dass der eine hohe CPU-Belastung verursacht (siehe <a href=\"https:\/\/web.archive.org\/web\/20180630135736\/http:\/\/www.tomshardware.co.uk:80\/forum\/id-2985455\/windows-driver-foundation-cpu-windows-media-player-running.html\" target=\"_blank\" rel=\"noopener\">hier<\/a>). Das nur als Schlenker, weil es gelegentlich aufpoppt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anfang des Monats hatte ich im Artikel Windows 10, Version 1607: Treiber-Signierung ge\u00e4ndert darauf hingewiesen, dass sich bei der Akzeptanz von Kernelmode-Treibern etwas \u00e4ndert. Da es nachgefragt wurde, mal ein paar erkl\u00e4rende Worte.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3694],"tags":[5313,115,5312,4378,5314],"class_list":["post-180936","post","type-post","status-publish","format-standard","hentry","category-windows-10","tag-kernelmode","tag-treiber","tag-usermode","tag-windows-10","tag-wudfsvc"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/180936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=180936"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/180936\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=180936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=180936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=180936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}