<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Волчьи IT-мысли &#187; трюки</title>
	<atom:link href="http://sww-it.ru/tag/%d1%82%d1%80%d1%8e%d0%ba%d0%b8/feed" rel="self" type="application/rss+xml" />
	<link>http://sww-it.ru</link>
	<description>Компьютерная безопасность, IT, антивирусная индустрия.</description>
	<lastBuildDate>Wed, 18 Jan 2012 11:20:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Использование мэппинга драйверов</title>
		<link>http://sww-it.ru/2010-07-08/485?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d0%25b8%25d1%2581%25d0%25bf%25d0%25be%25d0%25bb%25d1%258c%25d0%25b7%25d0%25be%25d0%25b2%25d0%25b0%25d0%25bd%25d0%25b8%25d0%25b5-%25d0%25bc%25d1%258d%25d0%25bf%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3%25d0%25b0-%25d0%25b4%25d1%2580%25d0%25b0%25d0%25b9%25d0%25b2%25d0%25b5%25d1%2580%25d0%25be%25d0%25b2</link>
		<comments>http://sww-it.ru/2010-07-08/485#comments</comments>
		<pubDate>Thu, 08 Jul 2010 11:50:08 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Отладка]]></category>
		<category><![CDATA[windbg]]></category>
		<category><![CDATA[драйвер]]></category>
		<category><![CDATA[мэппинг]]></category>
		<category><![CDATA[трюки]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=485</guid>
		<description><![CDATA[<p align="justify">В отладчике WinDbg существует специальная возможность – мэппинг драйвера. Отладчик может перехватить момент загрузки драйвера на тестовой машине и загрузить в память копию драйвера с машины разработчика. Эта способность избавляет разработчика от проблемы копирования файла драйвера на тестовую машину и, конечно, от забывчивости.</p> <p></p> <p align="justify">Прежде всего, необходимо внести в переменные окружения компьютера разработчика [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">В отладчике WinDbg существует специальная возможность – мэппинг драйвера. Отладчик может перехватить момент загрузки драйвера на тестовой машине и загрузить в память копию драйвера с машины разработчика. Эта способность избавляет разработчика от проблемы копирования файла драйвера на тестовую машину и, конечно, от забывчивости.</p>
<p><span id="more-485"></span></p>
<p align="justify">Прежде всего, необходимо внести в переменные окружения компьютера разработчика параметр <strong>_NT_KD_FILES</strong>, где значением этого параметра должен быть полный путь до специального map-файла, например, <strong>c:\driver.map</strong>.</p>
<p align="justify">Далее, необходимо создать сам map-файл по выбранному пути с указанным содержимым:</p>
<blockquote><p>map<br />
\??\C:\1\driver32.sys<br />
C:\project_path\out\debug\driver32.sys
</p></blockquote>
<p align="justify">Во второй строке файла необходимо указать путь до драйвера на тестовой машине (например, на VmWare) так, как он указан в реестре данного сервиса. В третьей строке необходимо указать путь до файла на машине разработчика. Удобнее всего использовать путь до директории, в которой собирается chk-билд драйвера. Тогда каждый раз при загрузке драйвера будет загружена его новая версия.
</p>
<p align="justify">В отладчике процесс загрузки драйвера с машины разработчика на тестовую машину выглядит примерно так:</p>
<blockquote><p>kd> g<br />
KD: Accessing &#8216;C:\project_path\out \debug\driver32.sys&#8217; (\??\C:\1\driver32.sys)<br />
  File size 91K&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
MmLoadSystemImage: Pulled \??\C:\1\driver32.sys from kd</p></blockquote>
<p align="justify">Удачной отладки!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-07-08%2F485&amp;title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BC%D1%8D%D0%BF%D0%BF%D0%B8%D0%BD%D0%B3%D0%B0%20%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%BE%D0%B2" id="wpa2a_2"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-07-08/485/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Трюки WinDbg</title>
		<link>http://sww-it.ru/2009-04-15/187?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d1%2582%25d1%2580%25d1%258e%25d0%25ba%25d0%25b8-windbg</link>
		<comments>http://sww-it.ru/2009-04-15/187#comments</comments>
		<pubDate>Tue, 14 Apr 2009 21:27:55 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Отладка]]></category>
		<category><![CDATA[windbg]]></category>
		<category><![CDATA[трюки]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=187</guid>
		<description><![CDATA[<p>Представляю вашему вниманию страницу &#171;Трюки WinDbg&#187;, которую буду пополнять по мере возможности. Об изменениях в ней я сообщу дополнительно. Вопросы можно оставлять в любой теме, которая относится к данной странице.</p> ]]></description>
			<content:encoded><![CDATA[<p>Представляю вашему вниманию страницу <a href="http://sww-it.ru/windbg-tricks">&#171;Трюки WinDbg&#187;</a>, которую буду пополнять по мере возможности. Об изменениях в ней я сообщу дополнительно. Вопросы можно оставлять в любой теме, которая относится к данной странице.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2009-04-15%2F187&amp;title=%D0%A2%D1%80%D1%8E%D0%BA%D0%B8%20WinDbg" id="wpa2a_4"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2009-04-15/187/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Трюки WinDbg</title>
		<link>http://sww-it.ru/windbg-tricks?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=windbg-tricks</link>
		<comments>http://sww-it.ru/windbg-tricks#comments</comments>
		<pubDate>Tue, 14 Apr 2009 21:12:55 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[windbg]]></category>
		<category><![CDATA[трюки]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?page_id=158</guid>
		<description><![CDATA[<p style="text-align: justify;">Этот раздел предназначен для описания различных трюков WinDbg. Некоторые их них полезны, некоторые очень полезны. Большинство я использую при динамическом анализе различных руткитов, однако, не стоит забывать о том, что WinDbg можно использовать как дебаггер приложений пользовательского режима. Сам дебаггер содержит громадное количество команд, но используется очень малая их часть. Поэтому будем считать, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Этот раздел предназначен для описания различных трюков <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" target="_blank">WinDbg</a>. Некоторые их них полезны, некоторые очень полезны. Большинство я использую при динамическом анализе различных руткитов, однако, не стоит забывать о том, что WinDbg можно использовать как дебаггер приложений пользовательского режима. Сам дебаггер содержит громадное количество команд, но используется очень малая их часть. Поэтому будем считать, что этот раздел я пишу сам для себя как справочник, чтобы не забыть. Данная страница будет пополняться по мере того, как я вспомню о том, что сюда надо написать :)  Повествование будет вестись в виде вопросов и ответов. И когда-нибудь я разобью все это на подразделы, но не сейчас (это предложение исчезнет в случае реализации).</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как правильно прописать путь до символов от Microsoft?</strong></p>
<p style="text-align: justify;">О: Находясь в WinDbg нажмите Ctrl-S и вставьте туда <span style="color: #0000ff;">c:\symserver;SRV*c:\symserver*http://msdl.microsoft.com/download/symbols</span></p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Чтобы проверить что-нибудь очень быстро, например, какое-либо смещение или получить недокументированную структуру приходится запускать виртуальную машину, а потом WinDbg. Можно как-нибудь быстрее?</strong></p>
<p style="text-align: justify;">О: Да. Запоминайте: <span style="color: #0000ff;">windbg.exe, Ctrl-K, Local, Enter</span>. Вы запустили WinDbg локально на своей реальной машине. Учтите, что структуры будут верны для вашей версии операционной системы. В Windows Vista необходимо предварительно выполнить команду <span style="color: #0000ff;">bcdedit -debug on</span> из cmd, запущенного под администратором и перегрузиться.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Можно ли создать дамп-файл не уводя машину в BSOD?</strong></p>
<p style="text-align: justify;">О: Можно. Для этого необходимо использовать команду <span style="color: #0000ff;">.dump</span>. Например, чтобы создать дамп-файл памяти ядра необходимо выполнить <span style="color: #0000ff;">.dump /f c:\kernel.dmp</span>. Кстати, если вы собираетесь делать это по COM-порту (или виртуальному pipe-порту в виртуальной машине), то приготовьтесь ждать, очень долго ждать.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как записать в файл произвольный фрагмент памяти?</strong></p>
<p style="text-align: justify;">О: Сделать это можно командой <span style="color: #0000ff;">.writemem</span>. Например, <span style="color: #0000ff;">.writemem c:\dumpnt.exe 0x804d7000 L?20d000</span>. Знак вопроса необходим для того, чтобы WinDbg не проверял размер записываемых данных.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: А записать в память из файла можно?</strong></p>
<p style="text-align: justify;">О: Используйте команду <span style="color: #0000ff;">.readmem</span>.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как искать и находить в памяти строчку или определенную последовательность байт?</strong></p>
<p style="text-align: justify;">О: Это можно сделать с помощью команды <span style="color: #0000ff;">s</span>. Для поиска ANSI-строки необходимо использовать ключ <span style="color: #0000ff;">-a</span>, для UNICODE-строки <span style="color: #0000ff;">-u</span>:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">s -a nt L?20d000 &#171;PAGE&#187;</span><br />
804d72f0  50 41 47 45 00 00 00 00-ef f8 0d 00 00 20 09 00  PAGE&#8230;&#8230;&#8230; ..<br />
804d7318  50 41 47 45 4c 4b 00 00-10 e5 00 00 00 20 17 00  PAGELK&#8230;&#8230;. ..<br />
804d7340  50 41 47 45 56 52 46 59-a6 ea 00 00 00 10 18 00  PAGEVRFY&#8230;&#8230;..<br />
804d7368  50 41 47 45 57 4d 49 00-ff 16 00 00 00 00 19 00  PAGEWMI&#8230;&#8230;&#8230;<br />
804d7390  50 41 47 45 4b 44 00 00-93 3d 00 00 00 20 19 00  PAGEKD&#8230;=&#8230; ..<br />
804d73b8  50 41 47 45 53 50 45 43-21 0e 00 00 00 60 19 00  PAGESPEC!&#8230;.`..<br />
804d73e0  50 41 47 45 48 44 4c 53-b8 1d 00 00 00 70 19 00  PAGEHDLS&#8230;..p..<br />
804d7430  50 41 47 45 44 41 54 41-b8 15 00 00 00 50 1a 00  PAGEDATA&#8230;..P..<br />
804d7458  50 41 47 45 43 4f 4e 53-40 30 00 00 00 70 1a 00  PAGECONS@0&#8230;p..<br />
804d7480  50 41 47 45 4b 44 00 00-21 c0 00 00 00 b0 1a 00  PAGEKD..!&#8230;&#8230;.<br />
804d74a8  50 41 47 45 43 4f 4e 53-8c 01 00 00 00 80 1b 00  PAGECONS&#8230;&#8230;..<br />
804d74d0  50 41 47 45 4c 4b 43 4f-88 00 00 00 00 90 1b 00  PAGELKCO&#8230;&#8230;..<br />
804d74f8  50 41 47 45 56 52 46 43-49 34 00 00 00 a0 1b 00  PAGEVRFCI4&#8230;&#8230;<br />
804d7520  50 41 47 45 56 52 46 44-48 06 00 00 00 e0 1b 00  PAGEVRFDH&#8230;&#8230;.<br />
804f285f  50 41 47 45 57 68 00 10-00 00 53 e8 51 3a 05 00  PAGEWh&#8230;.S.Q:..<br />
804f3936  50 41 47 45 68 00 10 00-00 53 8b f8 e8 79 29 05  PAGEh&#8230;.S&#8230;y).<br />
805ac98b  50 41 47 45 74 50 3d 2e-65 64 61 74 49 3d 49 4e  PAGEtP=.edatI=IN<br />
805adba0  50 41 47 45 74 19 81 f9-2e 65 64 61 74 11 85 c0  PAGEt&#8230;.edat&#8230;<br />
806c3548  50 41 47 45 5f 46 41 55-4c 54 5f 57 49 54 48 5f  PAGE_FAULT_WITH_<br />
806c35df  50 41 47 45 53 5f 41 56-41 49 4c 41 42 4c 45 0d  PAGES_AVAILABLE.<br />
806c362c  50 41 47 45 5f 46 41 55-4c 54 5f 49 4e 5f 4e 4f  PAGE_FAULT_IN_NO<br />
806c363d  50 41 47 45 44 5f 41 52-45 41 0d 0a 00 00 00 18  PAGED_AREA&#8230;&#8230;<br />
806c3b53  50 41 47 45 53 0d 0a 00-00 20 00 00 00 4b 45 52  PAGES&#8230;. &#8230;KER<br />
806c3b6f  50 41 47 45 5f 45 52 52-4f 52 0d 0a 00 18 00 00  PAGE_ERROR&#8230;&#8230;<br />
806c3bce  50 41 47 45 5f 45 52 52-4f 52 0d 0a 00 00 10 01  PAGE_ERROR&#8230;&#8230;<br />
806c51f7  50 41 47 45 53 5f 49 4e-5f 50 52 4f 43 45 53 53  PAGES_IN_PROCESS</p></blockquote>
<p style="text-align: justify;">Для поиска последовательности байт необходимо использовать ключ <span style="color: #0000ff;">-b</span>:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">s -b nt L?20d000 8b ff 55 8b ec 33 c0 50 50 50 ff 75 30</span><br />
80579084  8b ff 55 8b ec 33 c0 50-50 50 ff 75 30 ff 75 2c  ..U..3.PPP.u0.u,</p></blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как посмотреть структуру, чтобы раскрывались входящие в нее структуры?</strong></p>
<p style="text-align: justify;">О: Необходимо использовать команду <span style="color: #0000ff;">dt</span> с ключом <span style="color: #0000ff;">-r[глубина рекурсии]</span> <span style="color: #000000;">(в примере я использовал значение 2, хотя обычно хватает и 1)</span>:</p>
<p style="text-align: justify;">

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">lkd<span style="color: #339933;">&gt;</span> <span style="color: #339933;">!</span>object \Driver\beep
Object<span style="color: #339933;">:</span> 88c87c28  Type<span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>84d902c0<span style="color: #009900;">&#41;</span> Driver
    ObjectHeader<span style="color: #339933;">:</span> 88c87c10 <span style="color: #009900;">&#40;</span>old version<span style="color: #009900;">&#41;</span>
    HandleCount<span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>  PointerCount<span style="color: #339933;">:</span> <span style="color: #0000dd;">3</span>
    Directory Object<span style="color: #339933;">:</span> 8b675718  Name<span style="color: #339933;">:</span> Beep
lkd<span style="color: #339933;">&gt;</span> dt nt<span style="color: #339933;">!</span>_DRIVER_OBJECT 88c87c28 <span style="color: #339933;">-</span>r2
   <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">4</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #0000dd;">168</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DeviceObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f990</span> _DEVICE_OBJECT
      <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">3</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #208080;">0x110</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> ReferenceCount   <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> DriverObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c87c28</span> _DRIVER_OBJECT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">4</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #0000dd;">168</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DeviceObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f990</span> _DEVICE_OBJECT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> Flags            <span style="color: #339933;">:</span> <span style="color: #208080;">0x12</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> DriverStart      <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef22000</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> DriverSize       <span style="color: #339933;">:</span> <span style="color: #208080;">0x7000</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> DriverSection    <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f480</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> DriverExtension  <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c87cd0</span> _DRIVER_EXTENSION
         <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> DriverName       <span style="color: #339933;">:</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;\Driver<span style="color: #000099; font-weight: bold;">\B</span>eep&quot;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x024</span> HardwareDatabase <span style="color: #339933;">:</span> <span style="color: #208080;">0x82957e68</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\R</span>EGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM&quot;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x028</span> FastIoDispatch   <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x02c</span> DriverInit       <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef26005</span>           <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>GsDriverEntry<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x030</span> DriverStartIo    <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23248</span>           <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepStartIo<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x034</span> DriverUnload     <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23364</span>           <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepUnload<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x038</span> MajorFunction    <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #0000dd;">28</span><span style="color: #009900;">&#93;</span> <span style="color: #208080;">0x8ef23186</span>           <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>BeepOpen<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> NextDevice       <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> AttachedDevice   <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> CurrentIrp       <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> Timer            <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> Flags            <span style="color: #339933;">:</span> <span style="color: #208080;">0x44</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x020</span> Characteristics  <span style="color: #339933;">:</span> <span style="color: #208080;">0x100</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x024</span> Vpb              <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x028</span> DeviceExtension  <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6fa48</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x02c</span> DeviceType       <span style="color: #339933;">:</span> <span style="color: #0000dd;">1</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x030</span> StackSize        <span style="color: #339933;">:</span> <span style="color: #0000dd;">1</span> <span style="color: #ff0000;">''</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x034</span> Queue            <span style="color: #339933;">:</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> ListEntry        <span style="color: #339933;">:</span> _LIST_ENTRY <span style="color: #009900;">&#91;</span> <span style="color: #208080;">0x0</span> <span style="color: #339933;">-</span> <span style="color: #208080;">0x0</span> <span style="color: #009900;">&#93;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Wcb              <span style="color: #339933;">:</span> _WAIT_CONTEXT_BLOCK
      <span style="color: #339933;">+</span><span style="color: #208080;">0x05c</span> AlignmentRequirement <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x060</span> DeviceQueue      <span style="color: #339933;">:</span> _KDEVICE_QUEUE
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">20</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #0000dd;">20</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DeviceListHead   <span style="color: #339933;">:</span> _LIST_ENTRY <span style="color: #009900;">&#91;</span> <span style="color: #208080;">0x88d6f9f4</span> <span style="color: #339933;">-</span> <span style="color: #208080;">0x88d6f9f4</span> <span style="color: #009900;">&#93;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> Lock             <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> Busy             <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span> <span style="color: #ff0000;">''</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x074</span> Dpc              <span style="color: #339933;">:</span> _KDPC
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #208080;">0x13</span> <span style="color: #ff0000;">''</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x001</span> Importance       <span style="color: #339933;">:</span> <span style="color: #208080;">0x1</span> <span style="color: #ff0000;">''</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Number           <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DpcListEntry     <span style="color: #339933;">:</span> _LIST_ENTRY <span style="color: #009900;">&#91;</span> <span style="color: #208080;">0x0</span> <span style="color: #339933;">-</span> <span style="color: #208080;">0x0</span> <span style="color: #009900;">&#93;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> DeferredRoutine  <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef2333c</span>           <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepTimeOut<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> DeferredContext  <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f990</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> SystemArgument1  <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> SystemArgument2  <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> DpcData          <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x094</span> ActiveThreadCount <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x098</span> SecurityDescriptor <span style="color: #339933;">:</span> <span style="color: #208080;">0x8b674548</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x09c</span> DeviceLock       <span style="color: #339933;">:</span> _KEVENT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Header           <span style="color: #339933;">:</span> _DISPATCHER_HEADER
      <span style="color: #339933;">+</span><span style="color: #208080;">0x0ac</span> SectorSize       <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x0ae</span> Spare1           <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x0b0</span> DeviceObjectExtension <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6faa0</span> _DEVOBJ_EXTENSION
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">13</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DeviceObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f990</span> _DEVICE_OBJECT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> PowerFlags       <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> Dope             <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> ExtensionFlags   <span style="color: #339933;">:</span> <span style="color: #208080;">0x800</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> DeviceNode       <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> AttachedTo       <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> StartIoCount     <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x020</span> StartIoKey       <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x024</span> StartIoFlags     <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x028</span> Vpb              <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x02c</span> DependentList    <span style="color: #339933;">:</span> _LIST_ENTRY <span style="color: #009900;">&#91;</span> <span style="color: #208080;">0x88d6facc</span> <span style="color: #339933;">-</span> <span style="color: #208080;">0x88d6facc</span> <span style="color: #009900;">&#93;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x034</span> ProviderList     <span style="color: #339933;">:</span> _LIST_ENTRY <span style="color: #009900;">&#91;</span> <span style="color: #208080;">0x88d6fad4</span> <span style="color: #339933;">-</span> <span style="color: #208080;">0x88d6fad4</span> <span style="color: #009900;">&#93;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x0b4</span> Reserved         <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> Flags            <span style="color: #339933;">:</span> <span style="color: #208080;">0x12</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> DriverStart      <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef22000</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> DriverSize       <span style="color: #339933;">:</span> <span style="color: #208080;">0x7000</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> DriverSection    <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f480</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> DriverExtension  <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c87cd0</span> _DRIVER_EXTENSION
      <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> DriverObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c87c28</span> _DRIVER_OBJECT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Type             <span style="color: #339933;">:</span> <span style="color: #0000dd;">4</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> Size             <span style="color: #339933;">:</span> <span style="color: #0000dd;">168</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> DeviceObject     <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f990</span> _DEVICE_OBJECT
         <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> Flags            <span style="color: #339933;">:</span> <span style="color: #208080;">0x12</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> DriverStart      <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef22000</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x010</span> DriverSize       <span style="color: #339933;">:</span> <span style="color: #208080;">0x7000</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> DriverSection    <span style="color: #339933;">:</span> <span style="color: #208080;">0x88d6f480</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> DriverExtension  <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c87cd0</span> _DRIVER_EXTENSION
         <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> DriverName       <span style="color: #339933;">:</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;\Driver<span style="color: #000099; font-weight: bold;">\B</span>eep&quot;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x024</span> HardwareDatabase <span style="color: #339933;">:</span> <span style="color: #208080;">0x82957e68</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\R</span>EGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM&quot;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x028</span> FastIoDispatch   <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x02c</span> DriverInit       <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef26005</span>           <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>GsDriverEntry<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x030</span> DriverStartIo    <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23248</span>           <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepStartIo<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x034</span> DriverUnload     <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23364</span>           <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepUnload<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x038</span> MajorFunction    <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #0000dd;">28</span><span style="color: #009900;">&#93;</span> <span style="color: #208080;">0x8ef23186</span>           <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>BeepOpen<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> AddDevice        <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x008</span> Count            <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x00c</span> ServiceKeyName   <span style="color: #339933;">:</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;Beep&quot;</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Length           <span style="color: #339933;">:</span> <span style="color: #0000dd;">8</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> MaximumLength    <span style="color: #339933;">:</span> <span style="color: #208080;">0xa</span>
         <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> Buffer           <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c70640</span>  <span style="color: #ff0000;">&quot;Beep&quot;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x014</span> ClientDriverExtension <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x018</span> FsFilterCallbacks <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x01c</span> DriverName       <span style="color: #339933;">:</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;\Driver<span style="color: #000099; font-weight: bold;">\B</span>eep&quot;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Length           <span style="color: #339933;">:</span> <span style="color: #208080;">0x18</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> MaximumLength    <span style="color: #339933;">:</span> <span style="color: #208080;">0x18</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> Buffer           <span style="color: #339933;">:</span> <span style="color: #208080;">0x88c53368</span>  <span style="color: #ff0000;">&quot;\Driver<span style="color: #000099; font-weight: bold;">\B</span>eep&quot;</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x024</span> HardwareDatabase <span style="color: #339933;">:</span> <span style="color: #208080;">0x82957e68</span> _UNICODE_STRING <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\R</span>EGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM&quot;</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x000</span> Length           <span style="color: #339933;">:</span> <span style="color: #208080;">0x5a</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x002</span> MaximumLength    <span style="color: #339933;">:</span> <span style="color: #208080;">0x5c</span>
      <span style="color: #339933;">+</span><span style="color: #208080;">0x004</span> Buffer           <span style="color: #339933;">:</span> <span style="color: #208080;">0x8286b760</span>  <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\R</span>EGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM&quot;</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x028</span> FastIoDispatch   <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x02c</span> DriverInit       <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef26005</span>     <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>GsDriverEntry<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x030</span> DriverStartIo    <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23248</span>     <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepStartIo<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x034</span> DriverUnload     <span style="color: #339933;">:</span> <span style="color: #208080;">0x8ef23364</span>     <span style="color: #993333;">void</span>  Beep<span style="color: #339933;">!</span>BeepUnload<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span>
   <span style="color: #339933;">+</span><span style="color: #208080;">0x038</span> MajorFunction    <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #0000dd;">28</span><span style="color: #009900;">&#93;</span> <span style="color: #208080;">0x8ef23186</span>     <span style="color: #993333;">long</span>  Beep<span style="color: #339933;">!</span>BeepOpen<span style="color: #339933;">+</span><span style="color: #0000dd;">0</span></pre></div></div>

<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как в структуре посмотреть какую-либо входящую в нее структуру отдельно?</strong></p>
<p style="text-align: justify;">О: Для просмотра структур используется команда <span style="color: #0000ff;">dt</span>. Поле нужно указывать после имени модуля и названия самой структуры:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">dt nt!_OBJECT_TYPE poi(PsProcessType) TypeInfo.</span><br />
+0&#215;060 TypeInfo  :<br />
+0&#215;000 Length    : 0x4c<br />
+0&#215;002 UseDefaultObject : 0 &#187;<br />
+0&#215;003 CaseInsensitive : 0 &#187;<br />
+0&#215;004 InvalidAttributes : 0xb0<br />
+0&#215;008 GenericMapping : _GENERIC_MAPPING<br />
+0&#215;018 ValidAccessMask : 0x1f0fff<br />
+0x01c SecurityRequired : 0&#215;1 &#187;<br />
+0x01d MaintainHandleCount : 0 &#187;<br />
+0x01e MaintainTypeList : 0 &#187;<br />
+0&#215;020 PoolType  : 0 ( NonPagedPool )<br />
+0&#215;024 DefaultPagedPoolCharge : 0&#215;1000<br />
+0&#215;028 DefaultNonPagedPoolCharge : 0x2a8<br />
+0x02c DumpProcedure : (null)<br />
+0&#215;030 OpenProcedure : (null)<br />
+0&#215;034 CloseProcedure : (null)<br />
+0&#215;038 DeleteProcedure : 0x8094bb7a        void  nt!PspProcessDelete+0<br />
+0x03c ParseProcedure : (null)<br />
+0&#215;040 SecurityProcedure : 0x809732e4        long  nt!SeDefaultObjectMethod+0<br />
+0&#215;044 QueryNameProcedure : (null)<br />
+0&#215;048 OkayToCloseProcedure : (null)</p></blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: А можно как-нибудь разыменовывать указатель?</strong></p>
<p style="text-align: justify;">О: Да, используйте команду <span style="color: #0000ff;">poi</span>(см. выше).</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Для WinDbg есть различные дополнения. Как ими управлять?</strong></p>
<p style="text-align: justify;">О: Все очень просто. Для того, чтобы посмотреть список загруженных дополнений воспользуйтесь командой <span style="color: #0000ff;">.chain</span>. Для выгрузки и загрузки используйте <span style="color: #0000ff;">.unload</span> и <span style="color: #0000ff;">.load</span> соответственно.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как во время отладки в режиме ядра загрузить символы пользовательского пространства?</strong></p>
<p style="text-align: justify;">О: Используйте <span style="color: #0000ff;">.reload /user</span>.  Также используйте эту команду, если хотите увидеть стэк вызовов (<span style="color: #0000ff;">k</span>) в пользовательском пространстве текущего потока.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Можно как-нибудь искать MZ/PE модули в памяти по PE-заголовку?</strong></p>
<p style="text-align: justify;">О:<strong> </strong>Для поиска можно воспользоваться командой <span style="color: #0000ff;">s</span>, но проще использовать замечательную команду <span style="color: #0000ff;">.imgscan<span style="color: #000000;">. Модуль она не всегда определяет, да в большинстве случаев это и не нужно.</span></span></p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">.imgscan /r poi(MmSystemRangeStart) L10000000</span><br />
MZ at 8016a000 &#8212; size 13900<br />
MZ at 802c7000 &#8212; size d000<br />
MZ at 8032c000 &#8212; size 8c600<br />
MZ at 8051f000 &#8212; size b000<br />
Name: <br />
MZ at 80573000 &#8212; size 11000<br />
MZ at 80800000 &#8212; size 25c000<br />
Name: ntoskrnl.exe<br />
MZ at 80a5c000 &#8212; size 2c000<br />
Name: HAL.dll<br />
MZ at 815e8000 &#8212; size 7400<br />
MZ at 81637000 &#8212; size 2f000<br />
MZ at 8171d000 &#8212; size 38000<br />
MZ at 81878000 &#8212; size ff000<br />
MZ at 819f5000 &#8212; size 26000<br />
ReadVirtual: 819effa8 not properly sign extended<br />
ReadVirtual: 819effa9 not properly sign extended<br />
Name:</p>
<p>MZ at 8a806000 &#8212; size a000<br />
MZ at 8a814000 &#8212; size ad000<br />
Name: MZђ</p></blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как получить детальную информацию о модуле, его заголовках, секциях и т.д. по его адресу?</strong></p>
<p style="text-align: justify;">О: Есть две замечательные команды: <span style="color: #0000ff;">!lmi</span> и <span style="color: #0000ff;">!dh</span>. Рекомендую их использовать именно в таком порядке.</p>
<blockquote>
<p style="text-align: justify;">lkd> ? nt<br />
Evaluate expression: -2107363328 = 82643000<br />
lkd> <span style="color: #0000ff;">!lmi 82643000</span><br />
Loaded Module Info: [82643000]<br />
Module: ntkrpamp<br />
Base Address: 82643000<br />
Image Name: ntkrpamp.exe<br />
Machine Type: 332 (I386)<br />
Time Stamp: 4a77feb3 Tue Aug 04 13:26:11 2009<br />
Size: 3b9000<br />
CheckSum: 370777<br />
Characteristics: 122  perf<br />
Debug Data Dirs: Type  Size     VA  Pointer<br />
CODEVIEW    25, ebf18,   eb718 RSDS &#8212; GUID: {143D55DD-4AC9-42A4-93AC-D9DF136B9EF5}<br />
Age: 2, Pdb: ntkrpamp.pdb<br />
CLSID     4, ebf14,   eb714 [Data not mapped]<br />
Image Type: MEMORY   &#8212; Image read successfully from loaded memory.<br />
Symbol Type: PDB      &#8212; Symbols loaded successfully from symbol server.<br />
c:\symserver\ntkrpamp.pdb\143D55DD4AC942A493ACD9DF136B9EF52\ntkrpamp.pdb<br />
Load Report: public symbols , not source indexed<br />
c:\symserver\ntkrpamp.pdb\143D55DD4AC942A493ACD9DF136B9EF52\ntkrpamp.pdb</p></blockquote>
<p style="text-align: justify;">Команда <span style="color: #0000ff;">!dh</span> показывает более детальную информацию об образе со всеми заголовками и т.д.</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!dh 82643000</span></p>
<p>File Type: EXECUTABLE IMAGE<br />
FILE HEADER VALUES<br />
14C machine (i386)<br />
16 number of sections<br />
4A77FEB3 time date stamp Tue Aug 04 13:26:11 2009</p>
<p>0 file pointer to symbol table<br />
0 number of symbols<br />
E0 size of optional header<br />
122 characteristics<br />
Executable<br />
App can handle >2gb addresses<br />
32 bit word machine</p>
<p>OPTIONAL HEADER VALUES<br />
10B magic #<br />
8.00 linker version<br />
2EFA00 size of code<br />
BB200 size of initialized data<br />
3600 size of uninitialized data<br />
EC4B0 address of entry point<br />
1000 base of code<br />
&#8212;&#8212; new &#8212;&#8212;<br />
00400000 image base<br />
1000 section alignment<br />
200 file alignment<br />
1 subsystem (Native)<br />
6.00 operating system version<br />
6.00 image version<br />
6.00 subsystem version<br />
3B9000 size of image<br />
800 size of headers<br />
370777 checksum<br />
00040000 size of stack reserve<br />
00002000 size of stack commit<br />
00100000 size of heap reserve<br />
00001000 size of heap commit<br />
0  DLL characteristics<br />
2FF000 [    F674] address [size] of Export Directory<br />
36A348 [      8C] address [size] of Import Directory<br />
36C000 [   34170] address [size] of Resource Directory<br />
0 [       0] address [size] of Exception Directory<br />
36D400 [    1C48] address [size] of Security Directory<br />
3A1000 [   17B28] address [size] of Base Relocation Directory<br />
EBEDC [      38] address [size] of Debug Directory<br />
0 [       0] address [size] of Description Directory<br />
0 [       0] address [size] of Special Directory<br />
0 [       0] address [size] of Thread Storage Directory<br />
C0D20 [      40] address [size] of Load Configuration Directory<br />
0 [       0] address [size] of Bound Import Directory<br />
1000 [     264] address [size] of Import Address Table Directory<br />
0 [       0] address [size] of Delay Import Directory<br />
0 [       0] address [size] of COR20 Header Directory<br />
0 [       0] address [size] of Reserved Directory</p>
<p>SECTION HEADER #1<br />
.text name<br />
EAF3D virtual size<br />
1000 virtual address<br />
EB000 size of raw data<br />
800 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
68000020 flags<br />
Code<br />
Not Paged<br />
(no align specified)<br />
Execute Read</p>
<p>Debug Directories(2)<br />
Type       Size     Address  Pointer<br />
cv           25       ebf18    eb718    Format: RSDS, guid, 2, ntkrpamp.pdb<br />
(    10)       4       ebf14    eb714</p>
<p>SECTION HEADER #2<br />
_PAGELK name<br />
861 virtual size<br />
EC000 virtual address<br />
A00 size of raw data<br />
EB800 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
68000020 flags<br />
Code<br />
Not Paged<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #3<br />
POOLCODE name<br />
19DB virtual size<br />
ED000 virtual address<br />
1A00 size of raw data<br />
EC200 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
68000020 flags<br />
Code<br />
Not Paged<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #4<br />
POOLMI name<br />
BAD virtual size<br />
EF000 virtual address<br />
C00 size of raw data<br />
EDC00 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
68000020 flags<br />
Code<br />
Not Paged<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #5<br />
.data name<br />
4638C virtual size<br />
F0000 virtual address<br />
8800 size of raw data<br />
EE800 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C8000040 flags<br />
Initialized Data<br />
Not Paged<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #6<br />
ALMOSTRO name<br />
C9C virtual size<br />
137000 virtual address<br />
C00 size of raw data<br />
F7000 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C8000040 flags<br />
Initialized Data<br />
Not Paged<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #7<br />
SPINLOCK name<br />
E84 virtual size<br />
138000 virtual address<br />
0 size of raw data<br />
0 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C8000080 flags<br />
Uninitialized Data<br />
Not Paged<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #8<br />
PAGE name<br />
18EB06 virtual size<br />
139000 virtual address<br />
18EC00 size of raw data<br />
F7C00 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
60000020 flags<br />
Code<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #9<br />
PAGELK name<br />
14412 virtual size<br />
2C8000 virtual address<br />
14600 size of raw data<br />
286800 file pointer to raw data<br />
8290B000 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
60000020 flags<br />
Code<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #A<br />
PAGEKD name<br />
4419 virtual size<br />
2DD000 virtual address<br />
4600 size of raw data<br />
29AE00 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
60000020 flags<br />
Code<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #B<br />
PAGEVRFY name<br />
16D9B virtual size<br />
2E2000 virtual address<br />
16E00 size of raw data<br />
29F400 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
60000020 flags<br />
Code<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #C<br />
PAGEHDLS name<br />
1D8A virtual size<br />
2F9000 virtual address<br />
1E00 size of raw data<br />
2B6200 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
60000020 flags<br />
Code<br />
(no align specified)<br />
Execute Read</p>
<p>SECTION HEADER #D<br />
PAGEBSS name<br />
48 virtual size<br />
2FB000 virtual address<br />
0 size of raw data<br />
0 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C0000080 flags<br />
Uninitialized Data<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #E<br />
PAGEVRFB name<br />
23C0 virtual size<br />
2FC000 virtual address<br />
0 size of raw data<br />
0 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C0000080 flags<br />
Uninitialized Data<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #F<br />
.edata name<br />
F674 virtual size<br />
2FF000 virtual address<br />
F800 size of raw data<br />
2B8000 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
40000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Only</p>
<p>SECTION HEADER #10<br />
PAGEDATA name<br />
802C virtual size<br />
30F000 virtual address<br />
8200 size of raw data<br />
2C7800 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C0000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #11<br />
PAGEKDD name<br />
C015 virtual size<br />
318000 virtual address<br />
C200 size of raw data<br />
2CFA00 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C0000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #12<br />
PAGEVRFC name<br />
3608 virtual size<br />
325000 virtual address<br />
3600 size of raw data<br />
2DBC00 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
40000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Only</p>
<p>SECTION HEADER #13<br />
PAGEVRFD name<br />
CE8 virtual size<br />
329000 virtual address<br />
E00 size of raw data<br />
2DF200 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
C0000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Write</p>
<p>SECTION HEADER #14<br />
INIT name<br />
41436 virtual size<br />
32A000 virtual address<br />
41600 size of raw data<br />
2E0000 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
E2000020 flags<br />
Code<br />
Discardable<br />
(no align specified)<br />
Execute Read Write</p>
<p>SECTION HEADER #15<br />
.rsrc name<br />
34170 virtual size<br />
36C000 virtual address<br />
34200 size of raw data<br />
321600 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
40000040 flags<br />
Initialized Data<br />
(no align specified)<br />
Read Only</p>
<p>SECTION HEADER #16<br />
.reloc name<br />
17B28 virtual size<br />
3A1000 virtual address<br />
17C00 size of raw data<br />
355800 file pointer to raw data<br />
0 file pointer to relocation table<br />
0 file pointer to line numbers<br />
0 number of relocations<br />
0 number of line numbers<br />
42000040 flags<br />
Initialized Data<br />
Discardable<br />
(no align specified)<br />
Read Only</p></blockquote>
<p style="text-align: justify;"><strong>В: Как получить информацию о запущенных процессах в системе?</strong></p>
<p style="text-align: justify;">О: Для этого необходимо использовать команду <span style="color: #0000ff;">!process</span>. При отладке в пользовательском режиме необходимо использовать команду <span style="color: #0000ff;">.tlist</span>.</p>
<p style="text-align: justify;">Перечислим все процессы в системе <span style="color: #0000ff;">!process 0 0</span>:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!process 0 0</span><br />
**** NT ACTIVE PROCESS DUMP ****<br />
PROCESS 8494ed90  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000<br />
DirBase: 00122000  ObjectTable: 8b201e88  HandleCount: 3367.<br />
Image: System</p>
<p>PROCESS 889c5cf8  SessionId: none  Cid: 01f4    Peb: 7ffdd000  ParentCid: 0004<br />
DirBase: bbc26020  ObjectTable: 8b2f5038  HandleCount:  28.<br />
Image: smss.exe</p>
<p>PROCESS 87f27d90  SessionId: 0  Cid: 027c    Peb: 7ffd7000  ParentCid: 0270<br />
DirBase: bbc26060  ObjectTable: 96a266b0  HandleCount: 796.<br />
Image: csrss.exe</p>
<p>PROCESS 88dd4d90  SessionId: 0  Cid: 02b0    Peb: 7ffdf000  ParentCid: 0270<br />
DirBase: bbc260a0  ObjectTable: 96bdff18  HandleCount: 106.<br />
Image: wininit.exe</p>
<p>PROCESS 88bab520  SessionId: 1  Cid: 02b8    Peb: 7ffdf000  ParentCid: 02a8<br />
DirBase: bbc26040  ObjectTable: 96bf6050  HandleCount: 744.<br />
Image: csrss.exe</p></blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Как переключиться в контекст конкретного процесса?</strong></p>
<p style="text-align: justify;">О: Используйте команду <span style="color: #0000ff;">.process</span> (не путайте с командой <span style="color: #0000ff;">!process</span>).</p>
<blockquote>
<p style="text-align: justify;">lkd> .process<br />
Implicit process is now 85330020<br />
lkd> .process /r/p 87f27d90<br />
Implicit process is now 87f27d90<br />
Loading User Symbols<br />
&#8230;&#8230;&#8230;&#8230;..</p>
</blockquote>
<p style="text-align: justify;"><strong>В: А как переключиться &#171;регистровый&#187; контекст произвольного потока?</strong></p>
<p style="text-align: justify;">О: Во время отладки в ядре вам доступны те регистры, которые связаны с текущим потоком, который вы отлаживаете. Используйте команду <span style="color: #0000ff;">.thread</span> для переключения в &#171;регистровый&#187; контекст другого потока.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Какие есть команды для получения информации об объектах?</strong></p>
<p style="text-align: justify;">О: Я перечислю самые полезные на мой взгляд: <span style="color: #0000ff;">!object</span>, <span style="color: #0000ff;">!devobj</span>, <span style="color: #0000ff;">!devstack</span>, <span style="color: #0000ff;">!drvobj</span></p>
<p style="text-align: justify;">Команда <span style="color: #0000ff;">!object</span> показывает информацию о системном объекте. Например так:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!object 0x860ad988</span><br />
Object: 860ad988  Type: (84d902c0) Driver<br />
ObjectHeader: 860ad970 (old version)<br />
HandleCount: 0  PointerCount: 5<br />
Directory Object: 8b671350  Name: atapi</p></blockquote>
<p style="text-align: justify;">Или так:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!object \Device\Harddisk0</span><br />
Object: 8d2d1c50  Type: (84d491a0) Directory<br />
ObjectHeader: 8d2d1c38 (old version)<br />
HandleCount: 1  PointerCount: 6<br />
Directory Object: 8b6133a8  Name: Harddisk0</p>
<p>Hash Address  Type          Name<br />
&#8212;- &#8212;&#8212;-  &#8212;-          &#8212;-<br />
21  86b0eac8 Device        DR0<br />
33  8d2e29f8 SymbolicLink  Partition0<br />
34  8b673e40 SymbolicLink  Partition1<br />
35  8b671e30 SymbolicLink  Partition2</p></blockquote>
<p style="text-align: justify;">Команда <span style="color: #0000ff;">!devobj</span> показывает детальную информацию о структуре DEVICE_OBJECT:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!devobj \Device\Harddisk0\DR0</span><br />
Device object (86b0eac8) is for:<br />
DR0 \Driver\disk DriverObject <strong>86674718</strong><br />
Current Irp 00000000 RefCount 0 Type 00000007 Flags 00000050<br />
Vpb 86674198 Dacl 8b735a6c DevExt 86b0eb80 DevObjExt 86b0efc0 Dope 86674130<br />
ExtensionFlags (0&#215;00000800)<br />
Unknown flags 0&#215;00000800<br />
AttachedDevice (Upper) 86b0e7b8 \Driver\partmgr<br />
AttachedTo (Lower) <strong>860ad2d0</strong> \Driver\ACPI<br />
Device queue is not busy.</p></blockquote>
<p style="text-align: justify;">А команда <span style="color: #0000ff;">!devstack</span> показывает в удобном виде стек устройства:</p>
<blockquote>
<p style="text-align: justify;">lkd> <span style="color: #0000ff;">!devstack 860ad2d0</span><br />
!DevObj   !DrvObj            !DevExt   ObjectName<br />
86b0e7b8  \Driver\partmgr    86b0e870<br />
86b0eac8  \Driver\disk       86b0eb80  DR0<br />
> 860ad2d0  \Driver\ACPI       8519b6b8<br />
85b66028  \Driver\iaStor     85b660e0  IAAStorageDevice-0<br />
!DevNode 85b2f280 :<br />
DeviceInst is &#171;IDE\DiskST9320421AS_____________________________SD13____\4&#8243;30b36239&#8243;0&#8243;0.0.0&#8243;<br />
ServiceName is &#171;disk&#187;</p></blockquote>
<p style="text-align: justify;">В свою очередь, команда <span style="color: #0000ff;">!drvobj</span> покажет детальную информацию о структуре DRIVER_OBJECT:</p>
<blockquote>
<p style="text-align: justify;">lkd> .reload /f classpnp.sys<br />
lkd> <span style="color: #0000ff;">!drvobj 86674718 2</span><br />
Driver object (86674718) is for:<br />
\Driver\disk<br />
DriverEntry:   8afd0bbc    disk!GsDriverEntry<br />
DriverStartIo: 00000000<br />
DriverUnload:  8afedab2    CLASSPNP!ClassUnload<br />
AddDevice:     8afec4e9    CLASSPNP!ClassAddDevice</p>
<p>Dispatch routines:<br />
[00] IRP_MJ_CREATE                      8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[01] IRP_MJ_CREATE_NAMED_PIPE           8266b9d2    nt!IopInvalidDeviceRequest<br />
[02] IRP_MJ_CLOSE                       8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[03] IRP_MJ_READ                        8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[04] IRP_MJ_WRITE                       8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[05] IRP_MJ_QUERY_INFORMATION           8266b9d2    nt!IopInvalidDeviceRequest<br />
[06] IRP_MJ_SET_INFORMATION             8266b9d2    nt!IopInvalidDeviceRequest<br />
[07] IRP_MJ_QUERY_EA                    8266b9d2    nt!IopInvalidDeviceRequest<br />
[08] IRP_MJ_SET_EA                      8266b9d2    nt!IopInvalidDeviceRequest<br />
[09] IRP_MJ_FLUSH_BUFFERS               8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[0a] IRP_MJ_QUERY_VOLUME_INFORMATION    8266b9d2    nt!IopInvalidDeviceRequest<br />
[0b] IRP_MJ_SET_VOLUME_INFORMATION      8266b9d2    nt!IopInvalidDeviceRequest<br />
[0c] IRP_MJ_DIRECTORY_CONTROL           8266b9d2    nt!IopInvalidDeviceRequest<br />
[0d] IRP_MJ_FILE_SYSTEM_CONTROL         8266b9d2    nt!IopInvalidDeviceRequest<br />
[0e] IRP_MJ_DEVICE_CONTROL              8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[0f] IRP_MJ_INTERNAL_DEVICE_CONTROL     8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[10] IRP_MJ_SHUTDOWN                    8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[11] IRP_MJ_LOCK_CONTROL                8266b9d2    nt!IopInvalidDeviceRequest<br />
[12] IRP_MJ_CLEANUP                     8266b9d2    nt!IopInvalidDeviceRequest<br />
[13] IRP_MJ_CREATE_MAILSLOT             8266b9d2    nt!IopInvalidDeviceRequest<br />
[14] IRP_MJ_QUERY_SECURITY              8266b9d2    nt!IopInvalidDeviceRequest<br />
[15] IRP_MJ_SET_SECURITY                8266b9d2    nt!IopInvalidDeviceRequest<br />
[16] IRP_MJ_POWER                       8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[17] IRP_MJ_SYSTEM_CONTROL              8afd9d24    CLASSPNP!ClassGlobalDispatch<br />
[18] IRP_MJ_DEVICE_CHANGE               8266b9d2    nt!IopInvalidDeviceRequest<br />
[19] IRP_MJ_QUERY_QUOTA                 8266b9d2    nt!IopInvalidDeviceRequest<br />
[1a] IRP_MJ_SET_QUOTA                   8266b9d2    nt!IopInvalidDeviceRequest<br />
[1b] IRP_MJ_PNP                         8afd9d24    CLASSPNP!ClassGlobalDispatch</p></blockquote>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>В: Каким образом запускать скрипты, которые поддерживает отладчик?</strong></p>
<p style="text-align: justify;">О: Для начала сохраните скрипт в текстовом файле. Потом используйте команды:</p>
<p style="text-align: justify;">
<blockquote><p><span style="color: #0000ff;">$< Filename<br />
$>< Filename<br />
$$< Filename<br />
$$>< Filename<br />
$$>a< Filename [arg1 arg2 arg3 ... ]</span></p></blockquote>
<p style="text-align: justify;">Разницу в командах смотрите в документации.</p>
<p style="text-align: justify;"><strong>В: Какие есть команды для того, чтобы посмотреть структуры PEB и TEB?</strong></p>
<p style="text-align: justify;">О: Есть такие команды. Это <span style="color: #0000ff;">!peb</span> и <span style="color: #0000ff;">!teb</span>.</p>
<p style="text-align: justify;">
<blockquote>
kd> <span style="color: #0000ff;">!process 81631158</span><br />
PROCESS 81631158  SessionId: 0  Cid: 0790    <strong>Peb: 7ffd5000</strong>  ParentCid: 0750<br />
    DirBase: 062c0200  ObjectTable: e1980568  HandleCount:  28.<br />
    Image: calc.exe<br />
    VadRoot 815a9ea0 Vads 51 Clone 0 Private 119. Modified 0. Locked 0.<br />
    DeviceMap e19b5d88<br />
    Token                             e1b6d818<br />
    ElapsedTime                       00:00:15.484<br />
    UserTime                          00:00:00.015<br />
    KernelTime                        00:00:00.156<br />
    QuotaPoolUsage[PagedPool]         57956<br />
    QuotaPoolUsage[NonPagedPool]      2040<br />
    Working Set Sizes (now,min,max)  (641, 50, 345) (2564KB, 200KB, 1380KB)<br />
    PeakWorkingSetSize                641<br />
    VirtualSize                       27 Mb<br />
    PeakVirtualSize                   34 Mb<br />
    PageFaultCount                    664<br />
    MemoryPriority                    BACKGROUND<br />
    BasePriority                      8<br />
    CommitCharge                      194</p>
<p>        THREAD 815aa228  Cid 0790.0794  <strong>Teb: 7ffdf000</strong> Win32Thread: e1b75490 WAIT: (WrUserRequest) UserMode Non-Alertable<br />
            8146d020  SynchronizationEvent<br />
        Not impersonating<br />
        DeviceMap                 e19b5d88<br />
        Owning Process            0       Image:         <Unknown><br />
        Attached Process          81631158       Image:         calc.exe<br />
        Wait Start TickCount      4717           Ticks: 13 (0:00:00:00.203)<br />
        Context Switch Count      142                 LargeStack<br />
        UserTime                  00:00:00.000<br />
        KernelTime                00:00:00.203<br />
        Win32 Start Address calc!WinMainCRTStartup (0&#215;01012475)<br />
        Start Address kernel32!BaseProcessStartThunk (0x7c8106f5)<br />
        Stack Init f801d000 Current f801cc20 Base f801d000 Limit f8018000 Call 0<br />
        Priority 12 BasePriority 8 PriorityDecrement 2 DecrementCount 16<br />
        ChildEBP RetAddr<br />
        f801cc38 80500cd6 nt!KiSwapContext+0x2e (FPO: [Uses EBP] [0,0,4])<br />
        f801cc44 804f9d62 nt!KiSwapThread+0&#215;46 (FPO: [0,0,0])<br />
        f801cc6c bf802f52 nt!KeWaitForSingleObject+0x1c2 (FPO: [5,5,4])<br />
WARNING: Frame IP not in any known module. Following frames may be wrong.<br />
        f801cd4c 8053d638 0xbf802f52<br />
        f801cd4c 0007fee8 nt!KiFastCallEntry+0xf8 (FPO: [0,0] TrapFrame-EDITED @ f801ccec)<br />
        f801cd64 00000000 0x7fee8<br />
kd> <span style="color: #0000ff;">.process /r/p 81631158</span><br />
Implicit process is now 81631158<br />
.cache forcedecodeuser done<br />
Loading User Symbols<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
kd> <span style="color: #0000ff;">!peb</span><br />
PEB at 7ffd5000<br />
    InheritedAddressSpace:    No<br />
    ReadImageFileExecOptions: No<br />
    BeingDebugged:            No<br />
    ImageBaseAddress:         01000000<br />
    Ldr                       001a1e90<br />
    Ldr.Initialized:          Yes<br />
    Ldr.InInitializationOrderModuleList: 001a1f28 . 001a2bd0<br />
    Ldr.InLoadOrderModuleList:           001a1ec0 . 001a2bc0<br />
    Ldr.InMemoryOrderModuleList:         001a1ec8 . 001a2bc8<br />
            Base TimeStamp                     Module<br />
         1000000 3b7d8410 Aug 18 00:52:32 2001 C:\WINDOWS\system32\calc.EXE<br />
        7c900000 4802a12c Apr 14 04:11:24 2008 C:\WINDOWS\system32\ntdll.dll<br />
        7c800000 4802a12c Apr 14 04:11:24 2008 C:\WINDOWS\system32\kernel32.dll<br />
        7c9c0000 4802a111 Apr 14 04:10:57 2008 C:\WINDOWS\system32\SHELL32.dll<br />
        77dd0000 4802a0b2 Apr 14 04:09:22 2008 C:\WINDOWS\system32\ADVAPI32.dll<br />
        77e70000 4802a106 Apr 14 04:10:46 2008 C:\WINDOWS\system32\RPCRT4.dll<br />
        77fe0000 4802a11b Apr 14 04:11:07 2008 C:\WINDOWS\system32\Secur32.dll<br />
        77f10000 4802a0be Apr 14 04:09:34 2008 C:\WINDOWS\system32\GDI32.dll<br />
        7e410000 4802a11b Apr 14 04:11:07 2008 C:\WINDOWS\system32\USER32.dll<br />
        77c10000 4802a188 Apr 14 04:12:56 2008 C:\WINDOWS\system32\msvcrt.dll<br />
        77f60000 4802a116 Apr 14 04:11:02 2008 C:\WINDOWS\system32\SHLWAPI.dll<br />
        5cb70000 4802a114 Apr 14 04:11:00 2008 C:\WINDOWS\system32\ShimEng.dll<br />
        6f880000 4802a098 Apr 14 04:08:56 2008 C:\WINDOWS\AppPatch\AcGenral.DLL<br />
        76b40000 4802a13c Apr 14 04:11:40 2008 C:\WINDOWS\system32\WINMM.dll<br />
        774e0000 4802a111 Apr 14 04:10:57 2008 C:\WINDOWS\system32\ole32.dll<br />
        77120000 4802a112 Apr 14 04:10:58 2008 C:\WINDOWS\system32\OLEAUT32.dll<br />
        77be0000 4802a117 Apr 14 04:11:03 2008 C:\WINDOWS\system32\MSACM32.dll<br />
        77c00000 4802a11d Apr 14 04:11:09 2008 C:\WINDOWS\system32\VERSION.dll<br />
        769c0000 4802a11c Apr 14 04:11:08 2008 C:\WINDOWS\system32\USERENV.dll<br />
        5ad70000 4802a11e Apr 14 04:11:10 2008 C:\WINDOWS\system32\UxTheme.dll<br />
        773d0000 4802a094 Apr 14 04:08:52 2008 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll<br />
    SubSystemData:     00000000<br />
    ProcessHeap:       000a0000<br />
    ProcessParameters: 00020000<br />
    WindowTitle:  &#8216;C:\WINDOWS\system32\calc.EXE&#8217;<br />
    ImageFile:    &#8216;C:\WINDOWS\system32\calc.EXE&#8217;<br />
    CommandLine:  &#8216;&#187;C:\WINDOWS\system32\calc.EXE&#187; &#8216;<br />
    DllPath:      &#8216;C:\WINDOWS\system32;C:\WINDOWS\system32;C:\WINDOWS\system;C:\WINDOWS;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem&#8217;<br />
    Environment:  00010000<br />
        =::=::\<br />
        =C:=C:\<br />
        ALLUSERSPROFILE=C:\Documents and Settings\All Users<br />
        APPDATA=C:\Documents and Settings\sww\Application Data<br />
        CLIENTNAME=Console<br />
        CommonProgramFiles=C:\Program Files\Common Files<br />
        COMPUTERNAME=SWW-3DF7AD85928<br />
        ComSpec=C:\WINDOWS\system32\cmd.exe<br />
        FARHOME=C:\Far<br />
        FARLANG=English<br />
        FP_NO_HOST_CHECK=NO<br />
        HOMEDRIVE=C:<br />
        HOMEPATH=\Documents and Settings\sww<br />
        LOGONSERVER=\\SWW-3DF7AD85928<br />
        NUMBER_OF_PROCESSORS=1<br />
        OS=Windows_NT<br />
        Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem<br />
        PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH<br />
        PROCESSOR_ARCHITECTURE=x86<br />
        PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 8, GenuineIntel<br />
        PROCESSOR_LEVEL=6<br />
        PROCESSOR_REVISION=1708<br />
        ProgramFiles=C:\Program Files<br />
        SESSIONNAME=Console<br />
        SystemDrive=C:<br />
        SystemRoot=C:\WINDOWS<br />
        TEMP=C:\DOCUME~1\sww\LOCALS~1\Temp<br />
        TMP=C:\DOCUME~1\sww\LOCALS~1\Temp<br />
        USERDOMAIN=SWW-3DF7AD85928<br />
        USERNAME=sww<br />
        USERPROFILE=C:\Documents and Settings\sww<br />
        windir=C:\WINDOWS<br />
kd> <span style="color: #0000ff;">!teb 7ffdf000 </span><br />
TEB at 7ffdf000<br />
    ExceptionList:        0007ff10<br />
    StackBase:            00080000<br />
    StackLimit:           0007d000<br />
    SubSystemTib:         00000000<br />
    FiberData:            00001e00<br />
    ArbitraryUserPointer: 00000000<br />
    Self:                 7ffdf000<br />
    EnvironmentPointer:   00000000<br />
    ClientId:             00000790 . 00000794<br />
    RpcHandle:            00000000<br />
    Tls Storage:          00000000<br />
    PEB Address:          7ffd5000<br />
    LastErrorValue:       1309<br />
    LastStatusValue:      c0000034<br />
    Count Owned Locks:    0<br />
    HardErrorMode:        0
</p></blockquote>
<p style="text-align: justify;">Данные команды крайне полезны при анализе дампа. Не забывайте про них.</p>
<p style="text-align: justify;"><strong>В: Как получить имя модуля по адресу внутри него?</strong></p>
<p style="text-align: justify;">О: Прочтите статью <a href="http://sww-it.ru/2009-11-20/339">&#171;Адрес модуля в WinDbg&#187;</a> и/или воспользуйтесь командой <span style="color: #0000ff;">lma</span> или предоставленным скриптом.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">$$ pointer to modules list
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>PsLoadedModuleList
&nbsp;
	.<span style="color: #202020;">echo</span> <span style="color: #ff0000;">&quot;Section             Start               End                 Name&quot;</span>
&nbsp;
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> r $t1 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#40;</span>@$t1 <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span>@$t1 <span style="color: #339933;">!=</span> @$t0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       r $t1 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t1<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    r<span style="color: #339933;">?</span> $t2 <span style="color: #339933;">=</span> <span style="color: #339933;">#CONTAINING_RECORD( @$t1, nt!_LDR_DATA_TABLE_ENTRY, InLoadOrderLinks );</span>
    as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Section<span style="color: #009900;">&#125;</span> @$t2
&nbsp;
    $$  Get image name into $DriverName
    as <span style="color: #339933;">/</span>msu $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$DriverName<span style="color: #009900;">&#125;</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>@$t2<span style="color: #339933;">-&gt;</span>BaseDllName<span style="color: #009900;">&#41;</span>
    $$  Get image base into $Start
    as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Start<span style="color: #009900;">&#125;</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span>@$t2<span style="color: #339933;">-&gt;</span>DllBase<span style="color: #009900;">&#41;</span>
    $$  Get image base <span style="color: #339933;">+</span> image size into $End
    as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$End<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#40;</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span>@$t2<span style="color: #339933;">-&gt;</span>DllBase<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span>@$t2<span style="color: #339933;">-&gt;</span>SizeOfImage<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
&nbsp;
    .<span style="color: #202020;">block</span>
    <span style="color: #009900;">&#123;</span>
        .<span style="color: #202020;">echo</span> $<span style="color: #009900;">&#123;</span>$Section<span style="color: #009900;">&#125;</span><span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>$Start<span style="color: #009900;">&#125;</span><span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>$End<span style="color: #009900;">&#125;</span><span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>$DriverName<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$End<span style="color: #009900;">&#125;</span>
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Start<span style="color: #009900;">&#125;</span>
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$DriverName<span style="color: #009900;">&#125;</span>
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Section<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p style="text-align: justify;"><strong>В: Что такое мэппинг драйверов в WinDbg и как этим пользоваться?</strong></p>
<p style="text-align: justify;">О: Читайте в <a href="http://sww-it.ru/2010-07-08/485">отдельной статье</a>.</p>
<p style="text-align: justify;"><strong>В: А есть вообще полезные команды в WinDbg?</strong></p>
<p style="text-align: justify;">О: Конечно. Самая лучшая из них &#8212; <span style="color: #0000ff;">.cls</span> :)</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Полезные скрипты при динамическом анализе руткитов (взято с разрешения авторов из статьи <a href="http://nobunkum.ru/issue001/rootkits-windbg.html" target="_blank">&#171;Обнаружение руткитов режима ядра с помощью отладчика&#187;</a>).</p>
<p style="text-align: justify;">Скрипт для перечисления некоторых колбеков ядра:</p>
<p style="text-align: justify;">

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">.<span style="color: #202020;">echo</span> Create Process Notifiers<span style="color: #339933;">:</span>
$$ нотификаторы на создание процессов
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>PspCreateProcessNotifyRoutine
&nbsp;
$$ перебираем EX_CALLBACK элементы массива
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t2 <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> @$t2 <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">;</span> r $t2 <span style="color: #339933;">=</span> @$t2 <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    $$ отбрасываем младшие <span style="color: #0000dd;">3</span> бита<span style="color: #339933;">,</span> 
    $$ которые хранят количество ссылок на указатель
    r $t3 <span style="color: #339933;">=</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t0 <span style="color: #339933;">+</span> @$t2 <span style="color: #339933;">*</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xfffffff8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    .<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>@$t3<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $$ если указатель не равен нулю<span style="color: #339933;">,</span> 
        $$ выводим поле Function из EX_CALLBACK_ROUTINE_BLOCK
        dps @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t3 <span style="color: #339933;">+</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> L <span style="color: #0000dd;">1</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
.<span style="color: #202020;">echo</span> Create Thread Notifiers<span style="color: #339933;">:</span>
$$ нотификаторы на создание потоков
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>PspCreateThreadNotifyRoutine
&nbsp;
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t2 <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> @$t2 <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">;</span> r $t2 <span style="color: #339933;">=</span> @$t2 <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    r $t3 <span style="color: #339933;">=</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t0 <span style="color: #339933;">+</span> @$t2 <span style="color: #339933;">*</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xfffffff8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    .<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>@$t3<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        dps @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t3 <span style="color: #339933;">+</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> L <span style="color: #0000dd;">1</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
.<span style="color: #202020;">echo</span> Load Image Notifiers<span style="color: #339933;">:</span>
$$ нотификаторы на загрузку исполняемых образов
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>PspLoadImageNotifyRoutine
&nbsp;
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t2 <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> @$t2 <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">;</span> r $t2 <span style="color: #339933;">=</span> @$t2 <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    r $t3 <span style="color: #339933;">=</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t0 <span style="color: #339933;">+</span> @$t2 <span style="color: #339933;">*</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xfffffff8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    .<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>@$t3<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        dps @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t3 <span style="color: #339933;">+</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> L <span style="color: #0000dd;">1</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
.<span style="color: #202020;">echo</span> Registry Callbacks<span style="color: #339933;">:</span>
$$ нотификаторы на события системного реестра
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>CmpCallBackVector
&nbsp;
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t2 <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> @$t2 <span style="color: #339933;">&lt;</span> <span style="color: #208080;">0x64</span><span style="color: #339933;">;</span> r $t2 <span style="color: #339933;">=</span> @$t2 <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    r $t3 <span style="color: #339933;">=</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t0 <span style="color: #339933;">+</span> @$t2 <span style="color: #339933;">*</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #208080;">0xfffffff8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    .<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>@$t3<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        dps @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>@$t3 <span style="color: #339933;">+</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> L <span style="color: #0000dd;">1</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p style="text-align: justify;">Скрипт, проверяющий ServiceTable существующих потоков в системе:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">$$ указатель на список процессов
r $t0 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>PsActiveProcessHead
&nbsp;
$$ перечисляем активные процессы
.<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t1 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#40;</span>@$t1 <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span>@$t1 <span style="color: #339933;">!=</span> @$t0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      r $t1 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    r<span style="color: #339933;">?</span> $t2 <span style="color: #339933;">=</span> <span style="color: #339933;">#CONTAINING_RECORD(@$t1, nt!_EPROCESS, ActiveProcessLinks);</span>
    as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Procc<span style="color: #009900;">&#125;</span> @$t2
&nbsp;
    $$  Get image name into $ImageName.
    <span style="color: #202020;">as</span> <span style="color: #339933;">/</span>ma $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$ImageName<span style="color: #009900;">&#125;</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>@$t2<span style="color: #339933;">-&gt;</span>ImageFileName<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
&nbsp;
    .<span style="color: #202020;">block</span>
    <span style="color: #009900;">&#123;</span>
        .<span style="color: #202020;">echo</span> $<span style="color: #009900;">&#123;</span>$Procc<span style="color: #009900;">&#125;</span><span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>$ImageName<span style="color: #009900;">&#125;</span>
        .<span style="color: #202020;">echo</span> Active threads<span style="color: #339933;">:</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    $$ указатель на список активных потоков этого процесса
    r<span style="color: #339933;">?</span> $t3 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>nt<span style="color: #339933;">!</span>_LIST_ENTRY <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>@$t2<span style="color: #339933;">-&gt;</span>ThreadListHead<span style="color: #339933;">;</span>
&nbsp;
    $$ перечисляем потоки
    .<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>r $t4 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#40;</span>@$t4 <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span>@$t4 <span style="color: #339933;">!=</span> @$t3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          r $t4 <span style="color: #339933;">=</span> poi<span style="color: #009900;">&#40;</span>@$t4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        r<span style="color: #339933;">?</span> $t5 <span style="color: #339933;">=</span> <span style="color: #339933;">#CONTAINING_RECORD(@$t4, nt!_ETHREAD, ThreadListEntry)</span>
        r<span style="color: #339933;">?</span> $t5 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>nt<span style="color: #339933;">!</span>_KTHREAD <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>@$t5
&nbsp;
        $$ получаем значение KTHREAD<span style="color: #339933;">::</span><span style="color: #202020;">ServiceTable</span>
        r $t6 <span style="color: #339933;">=</span> @@c<span style="color: #339933;">++</span><span style="color: #009900;">&#40;</span>@$t5<span style="color: #339933;">-&gt;</span>ServiceTable<span style="color: #009900;">&#41;</span>
&nbsp;
        r $t7 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>KeServiceDescriptorTable
        r $t8 <span style="color: #339933;">=</span> nt<span style="color: #339933;">!</span>KeServiceDescriptorTableShadow
&nbsp;
        as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Kthread<span style="color: #009900;">&#125;</span> @$t5
        as <span style="color: #339933;">/</span>x $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$SDT<span style="color: #009900;">&#125;</span> @$t6
&nbsp;
        .<span style="color: #202020;">block</span> 
        <span style="color: #009900;">&#123;</span>
            .<span style="color: #202020;">echo</span> $<span style="color: #009900;">&#123;</span>$Kthread<span style="color: #009900;">&#125;</span> ServiceTable <span style="color: #339933;">=</span> $<span style="color: #009900;">&#123;</span>$SDT<span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        $$ проверяем значение
        .<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>@$t6 <span style="color: #339933;">!=</span> @$t7<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span>@$t6 <span style="color: #339933;">!=</span> @$t8<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            .<span style="color: #202020;">block</span>
            <span style="color: #009900;">&#123;</span>
                .<span style="color: #202020;">echo</span> <span style="color: #339933;">!!!</span> Changed value of KTHREAD<span style="color: #339933;">::</span><span style="color: #202020;">ServiceTable</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Kthread<span style="color: #009900;">&#125;</span>
        ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$SDT<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$ImageName<span style="color: #009900;">&#125;</span>
    ad $<span style="color: #009900;">&#123;</span><span style="color: #339933;">/</span>v<span style="color: #339933;">:</span>$Procc<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2Fwindbg-tricks&amp;title=%D0%A2%D1%80%D1%8E%D0%BA%D0%B8%20WinDbg" id="wpa2a_6"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/windbg-tricks/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

