Драйверы режима ядра

Тема в разделе "WASM.NT.KERNEL", создана пользователем wasm_test, 14 ноя 2008.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Сегодня очередным вопросом о том, с чего начать кодинг под ринг0, меня вынудили дать развернутый ответ, в связи с чем хочу все изложить последовательно.

    WARNING флеймерам: все нижеизложенное является моей личной точкой зрения, не претендует на единственно возможную и ни в коем случае на абсолютную правильность. Это одно из возможных руководств к действию, не исключающее других, но предполагающее, что человек будет следовать поэтапно и последовательно, не перепрыгивая и не меняя местами пункты. Приветствуются конструктивные замечания к изложенным инструментам и справочным материалам.

    Все нижеизложенное касается кодинга под ос XP/2003 x32, для более поздних потребуется некоторые корректировки, но я все равно рекомендую начинать с икспи.
    Сперва речь пойдет про необходимые инструменты.

    1. Конечно же, потребуется Windows Driver Kit , он же Driver Development Kit в прошлом, вообщем называйте как хотите, а я буду сокращенно именовать такие продукты далее как DDK. Суть в том, что там содержатся инклуды и либы для Си компилятора, чтобы можно было собрать работающий бинарник драйвера. Так же обычно там содержатся и специальные версии этих самых компиляторов и линкеров, которыми я обычно предпочитаю не пользоваться, а собирать всё в студии, о чем расскажу далее. Где достать wdk/dkk не помню, я думаю, что гуглу виднее, помню лишь что когда-то что-то связанное с этим было платным и свободно не раздавалось вроде бы, но в любом случае можно достать, тем более сейчас.

    2. Очень полезно будет заиметь так же Installable File System Kit (IFS Kit), в котором есть много того, чего нету в ддк. Даже если вы не будете разрабатывать драйвера файловых систем, хидеры и либы из ifs kit лишними не будут. В кустарных условиях если совсем пришел капец можно доволствоваться файлом ntifs.h, который составили добрые люди и распространяют по лицензии GNU GPL, который можно найит на 1-2 строчке гугла по запросу "ntifs.h" (для тех, кому лень - сначала подзатыльник ;). потом - ntifs.h). Где достать сам IFS Kit честно не знаю и как он ко мне попал так же не помню. Рекомендую погуглить.

    3. Debugging Tools for Windows x32, в принципе гугл на это название сразу выдает линк, но, опять же для ленивых, клац.
    Там же предлагают скачать символы - я бы не рекомендовал. Во-первых, далеко не все файлы из символьного пака потребуются. Во-вторых, я до сих пор не разобрался как прикрутить их символьные паки к ихнему же WinDbg (отладчик из Debugging Tools for Windows). Почему-то те символы, которые скачивает WinDbg в рантайме, имеют другую структуру каталогов, нежели их паки. Вообщем, мое предложение - скачивать символы в рантайме, благо у большинства инет сейчас быстрый и трафика шибко много там не потребуется - от силы метров 100-150 суммарно для большинства бинарей, которые вообще потребуются. Для этого надо будет ввести команду в WinDbg !sympath srv*D:\Symbols*http://msdl.microsoft.com/download/symbols, где D:\Symbols - локальный путь, куда сохранять символы. Ну, об этом далее.

    4. Локально установленный MSDN версии не ниже April 2007. Естественно, чтобы там была дока и на ддк. Иначе будет совсем-совсем грустно.

    5. М. Руссинович, Д. Соломон "Внутреннее устройство Microsoft Windows 2000/XP/2003 Server". И не надо говорить, что она толстая и нет времени читать! =)
    Никогда не понимал людей, которые так говорят про справочник. А ведь это по сути справочник. Ну, точнее, я, конечно, не хочу сказать, что все книги делятся на учебники и справочники, нет. Я клоню к тому, что это не учебник. Её стоит читать подряд, но не стоит пытаться понять абсолютно все, о чем написано, в отличие от учебника. В этом плане она частичто учебник. Потом, когда потребуется что-то конкретное, лезем в нужную главу и начинаем досконально изучать. И тогда эта книга - справочник. Я ее полностью страницу за страницей читал два раза. Прежде, чем что-либо читать еще или кодить. Так получилось, что я тогда уезжал в другой город на две недели, а незадолго до этого я ходил в книжный и случайно наткнулся на эту книжку и купил. Решил взять её почитать в дороге или по-вечерам. Взял:) Комп с собой не брал, поэтому вечерами я только и делал, что читал эту книгу подряд страницу за страницей. За две недели вечерами я прочитал ее два раза "от корки до корки", как говорится. Неприятный момент в том, что к концу чтения начинает забываться то, о чем писалось в начале. Это первая причина, почему я ее перечитал тогда дважды. Вторая причина - такой материал трудно изложить последовательно, многие части ядра взаимосвязаны и описать одно, не описывая другого, очень трудно. Поэтому первый раз ее нужно сесть читать, не стараться запомнить и понять всё, стараться понять и запомнить самое главное, а что именно главное, будет ясно по ходу чтения - об этом будет больше всего говориться, и оно автоматически запомнится лучше всего. При первом прочтении большинство терминов будут непонятны даже с учетом наличия глоссария в конце по описанной выше причине. Поэтому после первого прочтения книга читается второй раз, опять не надо стараться запомнить всё, но понять нужно больше, чем в первый раз - ведь теперь в общих чертах известен материал последующих глав. Только после таких манипуляций с этой книгой я рекомендую садиться что-либо писать.
    Не особо люблю статьи аля "пишем первый драйвер за 5 минут своими руками ляляля", одну из которых наблюдал в последнее время на хабре, не в обиду автору будет сказано. Там очень стараются излагать материал по ходу дела, в итоге получается статья про первый драйвер, где немного рассказано про подсистему ввода-вывода, немного про память, немного про IRQL, еще чуть-чуть про диспетчеризацию сервисов, в результате чего у читателя образуется такая каша, что ее потомздесь разгребать и разгребать, причем научить человека потом сложнее, чем если бы он таких статей вообще не читал. К сожалению, есть опыт с одним таким знакомым. Ну, вообщем-то, даже и не одним.

    6. После прочтения Руссиновича очень рекомендую статьи Four-F на васме, сам их использовал когда-то:) Наверное, это самый качественный вариант изложения материала. К сожалению, там затронуты не все необходимые на первых порах темы, поэтому остальное придется брать из других источников. Важный момент: настоятельно рекомендую именно сначала прочитать Руссиновича, а потом статьи Four-F'а. Видел людей, которые выпендриваются, что учатся только по статьям, не имея теоретической базы. Ни к чему хорошему это не приводит при всем уважении к качеству статей и их авторам. Без теоретической базы - никуда.

    7. VMware Workstation не менее, по-моему 5 версии (кажется, там появилась поддержка снапшотов, которые будут критически необходимы). Про то, какие бяки вытворять с ней и как настраивать - далее, а пока продолжим список инструментов и теоретического материала.

    8. Windows Research Kernel; win2k, nt4 sources. Поскольку это варез, ссылок не дождётесь:) Первое гуглится легко (и даже по-моему доступно на сайте мс), а второе и третье откровенный варез, который не очень просто найти в гугле, но возможно, если хорошо поискать. Мануалы, книжки и статьи это хорошо, а первоисточник - исходники - всегда лучше. Если что-то будет не понятно в Руссиновиче, то всегда можно посмотреть, а как же оно устроено на самом деле. Так же окажутся полезными сорцы React OS, если не знаете, что это такое - срочно бегом в гугл и читать офсайт. Штука очень интересная и полезная (я про отдельно взятые исходники с учебной точки зрения. Сама ОС пока кривая)

    9. Windows Checked Build. Что такое checked build и чем отличаются checked и retail build можно узнать из Руссиновича. К сожалению, мелкомягкие не позволяют скачать отдельно ядро и хал в checked сборке, поэтому надо либо выкачивать весь инсталлер, либо (если трафик не позволяет) кого-то просить у кого он есть, чтобы вынули ядро и хал оттудова. Сам инсталлер это самораспаковывающийся CAB-архив, поэтому даже ничего ставить не надо, просто открыть WinRAR'ом. Потребуются файлы i386\nt*kr*.ex_ (4 штуки), i386\hal*.dl_ (не помню сколько штук :lol: )

    10. Удобные маленькие штучки от Sysinternals (опять этот Руссинович!:lol: ) Всякие regmon, filemon, DbgView, WinObj окажутся очень полезными при отладке.
    Так же советую WinObjEx от Four-F. Тоже незаменимая штука.

    11. Само собой, лоадер драйверов. Благо их пруд пруди. Хоть из kmdkit Four-F'а, хоть мой компактный, хоть какой-нибудь. Главное, чтобы умел инсталить сервис, стартовать и останавливать его.

    12. Так же полезна будет утилита pdbdump - ей нужно скормить символы ядра и хранить полученные хидеры как зеницу ока. Ибо документированы далеко не все структуры, а интерес человека не знает границ и везде хочется сунуть свой нос.
    UPD: WARN: сгенеренные хидеры не всегда могут быть использованы как хидеры, поскольку union'ы оно распознает криво и надо смотреть по оффсетам и фиксить соответствующим образом их.
    Info: http://www.wasm.ru/forum/viewtopic.php?pid=328285#p328285


    13. Хороший дизассемблер, тут IDA Pro + HexRays практически сметают всех конкурентов. Один раз надо будет сделать базы .idb для
    ядра и хал (разумеется с символами) для checked и retail версий ядра.
    С инструментами, вроде, покончили. Для особых извращенцев, у которых в крови зашкаливает адреналин и всегда хочется приключений на свои вторые девяносто, могу посоветовать поставить локально на компьютер отладчик Soft ICE. Если сумеете поставить и заставить его работать, то получите массу удовольствия от того, как драйвера будут падать не в синий экран, а в черное окно отладчика, в котором можно будет покрутить код и потыкать в регистры. Очень интересно, забавно, но крайне не рекомендовано - эксперименты, которые коснутся кеша файловой системы и прочих важных штук, могут угробить вам часть данных на харде. Собственно тоже самое могу сказать и просто про запуск своих неотлаженных драйверов на собственной машине. Вообщем, как говорится, на свой страх и риск и не говорите потом, что я не предупреждал, если вдруг пропадёт вся порнуха с винта :lol:

    Теперь излагаю что требуется сделать:

    1. Я думаю, я уже достаточно раз повторил про Руссиновича и про статьи. Так что сначала нужно заиметь себе в голове теорминимум.

    2. Если чего-то из списка нет, то поставить: студию (подойдет любая >= чем 2003 (7 версия) и заканчивая 2008 (9 версия,последняя)), Debugging Tools, VMware, скачать checked build и вообще заиметь все инструменты из списка в первой половине статьи.

    3. Настроить студию для сборки драйверов. Например, здесь неплохо так изложено как это сделать. Тут обычно многие справляются, поскольку подключать мозги к этому процессу практически не требуется.

    4. Настроить на VMware (как, она еще не установлена? тогда бегом ставить) COM-порт чтобы он указывал на пайп. http://rootkits.su/viewtopic.php?id=72 тут вполне достойно описано как это сотворить. Для проверки нужно загрузить винду в вмваре, предварительно прописав в C:\boot.ini пункт с дополнительными ключами /DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 Далее, загрузить этот пункт при старте и попробовать подключиться из WinDbg - его нужно запустить, нажать Ctrl-K, выбрать закладку COM, галочку Pipe, в качестве порта ввести \\.\pipe\com_1 (или вместо \\.\ путь к компьютеру, где запущена VMware (либо это все можно указать в командной строке). Да-да, вы не ослышались - можно VMware поставить на одном компе, а отлаживать с другого), скорость 115200 и нажать ОК. После чего нажать Ctrl-Break. Если все сделано верно, то WinDbg скажет, что ему пришлось остановиться, потому что мы его попросили и если после этого мы увидим приглашение для ввода команд внизу окна - все прошло чудесно и все работает. Можно попробовать набрать что-нибудь, например, kb и посмотреть стек вызовов, или r и посмотреть регистры.

    5. Подключаться к VMware уже можно, но нет символов. Срочно исправляем это недоразумение и в WinDbg прописываем в File -> Symbol File Path srv*D:\Symbols*http://msdl.microsoft.com/download/symbols, где D:\Symbols - путь, где будут сохраняться все скаченные символы. Туда можно скачивать символы и разных версий виндоус, они не перепутаются, поскольку распределяются по каталогам с уникаьлными номерами-хешами содержимого. Можно поставить галочку Reload, а можно ввести команду .reload по необходимости

    6. Наделать в VMware снапшотов - сначала retail версию, загруженную в обычном и дебаг режимах, потом заменить ядро и хал на checked версии и снова загрузить в дебаг и обычном режимах. Получается 4 снапшота. Очень пригодится потом.

    7. Наделать в IDA .idb баз для ядра и хал checked и retail версий, разумеется, скормив символы ей. Получатся увесистые базы мегабайт по пятьдесят, которые в дальнейшем очень потребуются, если вдруг что-то будет непонятно. Сначала лезем в Руссиновича, потом в сорцы ядра, потом в дизасм ядра в этих базах, пока не наступит прозрение.

    8. Утилитой pdbdump наделать хидеров разных версий ядра с разных систем (nt, 2000, xp, 2003 с различными SP. пригодится), как я уже выше говорил. Поскольку в ддк документировано много, но далеко не всё. А любопытство границ не знает.

    Вроде бы всё, если что-то еще вспомню, то допишу.
    PS. Пыщ-пыщ :lol:

    PPS. Ссылки из статьи (чтобы не бегать лишний раз по тексту):

    http://www.acc.umu.se/~bosse/ntifs.h (ntifs.h)
    http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx (Debugging tools)
    http://alter.org.ua/ru/docs/nt_kernel/vc8_proj/ (настройка Visual Studio 8)
    http://rootkits.su/viewtopic.php?id=72 (настройка VMware)
    http://sourceforge.net/projects/pdbdump (утилита pdbdump)

    А так же:

    http://www.wasm.ru/publist.php?list=21 (статьи раздела "Секреты Win32")
    http://rootkits.su/viewforum.php?id=1 (раздел, посвященный кернел кодингу)
    http://rootkit.com/ (без комментариев..)
    http://osronline.com/ (очень хороший сайтик с форумом, где много полезного, правда, на англицком.)
    http://reactos.org/ (оф сайт React OS)
    http://forum.vingrad.ru/ (еще один достойный форум по программированию)
    http://rsdn.ru/ (тут думаю тоже комментарии не нужны)
    http://technet.microsoft.com/en-us/sysinternals/default.aspx (сайт Sysinternals, который с недавнего времени хостится у MS, когда они их переманили к себе)
    http://www.dumpanalysis.org/ (в тему анализа дампов, вчера-сегодня некий Ra_Sh подкинул в личку, думаю, он будет не против, если я опубликую)
     
  2. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Как дополнение к вышесказанному - очень хорошо подымает уровень написания драйверов пример toaster из DDK любых версий. Собственно чтение мануалов DDK без разбора исходников тостера малоэффективно. Сам комплекс драйверов тостер с лихвой перекрывает материал изложенный Four-F.
     
  3. kinji

    kinji New Member

    Публикаций:
    0
    Регистрация:
    23 май 2006
    Сообщения:
    61
    Привет всем :)

    Мне очень понравился "manual" о том, как читать книгу Руссиновича и Соломона. Подробно так и... я бы сказал жизненно :)

    Серьёзно очень понравился =)
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Спасибо я старался.)
     
  5. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Для начала это конечно не плохо, но :
    1. Если в планах писать "руткиты и так для забавы", то стоит самому написать функции для загрузки/выгрузки драйвера.
    2. Если все серьезно, то стоит прочитать про inf файлы. ИМХО с ними очень удобно и не нужны всякие сторонние програмки :
    Код (Text):
    1. net start <имя>
    2. net stop <имя>
    Инсталяция тоже простое дело. Правой кнопкой мыши и нажать Install.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А че про них читать, если они легко генерятся GenInf'ом. Можно, конечно и так.
    Но для начинаний, по-моему, перебор.
     
  7. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    Great
    хорошо написал все, респект
    у новичков после прочтения создается правильное впечатление - драйвера это не просто
    я бы сказал - очень не просто
    само по себе программирование большинству людей не дается, а уж это ...
     
  8. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    я бы пожелал новичку в ядерном девелопменте кроме понятное дело мозгов еще слонового здоровья, железных нервов и лошадиной выносливости. И хорошего железа! 16 гигов, рейд 5 и 2 больших моника на варный хост!
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я бы пожелал еще много чего нелегального, но, увы, это на форуме обсуждать не разрешается =)))
     
  10. Clear_Energy

    Clear_Energy Алексей

    Публикаций:
    0
    Регистрация:
    3 ноя 2008
    Сообщения:
    375
    Лечение травами помогает :) (не не не, сам не знаю, люди рассказывали :))
     
  11. Rodin

    Rodin New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2007
    Сообщения:
    125
    Можно упомянуть книжку Солдатова - Программирование драйверов Windows. ИМХО вместе с Four-F лучшее по драйверам из российских авторов. Также исходники статей Four-F сложновато разбирать тем кто не знает асма.
     
  12. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Касаемо свободных тулз разработки, сюда можно добавить компилятор GCC, из пакета MinGW/CygWin Основные DDK файлы (хидеры/либы) в нем присутствуют, он вполне осиливает скомпилять каркас:
    Код (Text):
    1. #include <ntddk.h>
    2.  
    3. NTSTATUS
    4. DriverDeviceControl(
    5.     IN PDEVICE_OBJECT DeviceObject,
    6.     IN PIRP Irp
    7.     )
    8. {
    9.     //
    10.     // TODO
    11.     //
    12.  
    13.     IoCompleteRequest( Irp, IO_NO_INCREMENT );
    14.     return STATUS_SUCCESS;  
    15. }
    16.  
    17. NTSTATUS
    18. DriverCreate(
    19.     IN PDEVICE_OBJECT DeviceObject,
    20.     IN PIRP Irp
    21.     )
    22. {
    23.     //
    24.     // Go ahead and set the request up as successful
    25.     //
    26.     Irp->IoStatus.Status      = STATUS_SUCCESS;
    27.     Irp->IoStatus.Information = 0;
    28.  
    29.     IoCompleteRequest( Irp, IO_NO_INCREMENT );
    30.     return STATUS_SUCCESS;  
    31. }
    32.  
    33.  
    34. VOID
    35. DriverUnload(
    36.     IN PDRIVER_OBJECT DriverObject
    37.     )
    38. {
    39.     WCHAR                   deviceLinkBuffer[]  = L"\\DosDevices\\MyDrvName";
    40.     UNICODE_STRING          deviceLinkUnicodeString;
    41.     //
    42.     // Delete the symbolic link for our device
    43.     //
    44.     RtlInitUnicodeString( &deviceLinkUnicodeString, deviceLinkBuffer );
    45.     IoDeleteSymbolicLink( &deviceLinkUnicodeString );
    46.     IoDeleteDevice( DriverObject->DeviceObject );
    47. }
    48.  
    49. //----------------------------------------------------------------------
    50. //
    51. // DriverEntry
    52. //
    53. // Installable driver initialization. Here we just set ourselves up.
    54. //
    55. //----------------------------------------------------------------------
    56. NTSTATUS
    57. DriverEntry(
    58.     IN PDRIVER_OBJECT DriverObject,
    59.     IN PUNICODE_STRING RegistryPath
    60.     )
    61. {
    62.     NTSTATUS                ntStatus;
    63.     WCHAR                   deviceNameBuffer[]  = L"\\Device\\MyDrvName";
    64.     UNICODE_STRING          deviceNameUnicodeString;
    65.     WCHAR                   deviceLinkBuffer[]  = L"\\DosDevices\\MyDrvName";
    66.     UNICODE_STRING          deviceLinkUnicodeString;    
    67.     PDEVICE_OBJECT          DeviceObject;
    68.     //
    69.     // Setup our name and symbolic link.
    70.     //
    71.     RtlInitUnicodeString (&deviceNameUnicodeString,  deviceNameBuffer );
    72.     RtlInitUnicodeString (&deviceLinkUnicodeString,  deviceLinkBuffer );
    73.  
    74.     //
    75.     // Set up the device used for communications
    76.     //
    77.     ntStatus = IoCreateDevice ( DriverObject,
    78.                                 0,
    79.                                 &deviceNameUnicodeString,
    80.                                 FILE_DEVICE_UNKNOWN,
    81.                                 0,
    82.                                 FALSE,
    83.                                 &DeviceObject );
    84.     if( NT_SUCCESS(ntStatus)) {
    85.     //
    86.     // Create a symbolic link to gain access to this driver/device
    87.     //
    88.     ntStatus = IoCreateSymbolicLink (&deviceLinkUnicodeString,
    89.                                          &deviceNameUnicodeString );
    90.     }
    91.  
    92.     if( !NT_SUCCESS(ntStatus)) {
    93.     //
    94.     // Something went wrong, so clean up (free resources etc)
    95.     //
    96.         if( DeviceObject ) IoDeleteDevice( DeviceObject );
    97.         IoDeleteSymbolicLink( &deviceLinkUnicodeString );
    98.         return ntStatus;
    99.     }
    100.     //
    101.     // Create dispatch points for all routines that must be handled
    102.     //
    103.     DriverObject->DriverUnload = DriverUnload;
    104.     DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverCreate;
    105.     DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]  = DriverDeviceControl;
    106.     return STATUS_SUCCESS;
    107. }
    За более продвинутыми примерами, можно обратиться к исходникам QEMU и его ускорительного дрова KQEMU :)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну дрова то можно и на фасме и на масме и на дельфи писать, и еще найти кучу Си компиляторов, которые можно к этому делу приспособить. Но мне как-то больше студия по душе. В чем смысл в gcc собирать? Мне просто интересно)
     
  14. VENOM4X

    VENOM4X New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    29
    Да, Great рулит!
    Теперь будет топик, куда можно будет направить новичков, говоря - "там есть все что тебе нужно для начала". (блин, жалко что этого топика небыло когда я начинал).
    Great - Thanks!
     
  15. inviZ

    inviZ Сергей

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    92
    Адрес:
    Хабаровск
    Насчет WDK - сейчас свободно доступен, выкладывается на "Microsoft Connect".
     
  16. rommanio

    rommanio New Member

    Публикаций:
    0
    Регистрация:
    4 май 2008
    Сообщения:
    151
    Я бы также порекомендовал книгу "Windows Driver Foundation: разработка драйверов".
    Сам не далее как вчера ее приобрел. :)
     
  17. Yerty

    Yerty New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2008
    Сообщения:
    107
    На rootkit.com есть улитилита "InstDrv" в разделе downloads. Её тоже можно использовать для работы с драйверами(установки).
     
  18. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    VMWare это конечно хорошо, но может что-нибудь посоветуете по удаленной отладке?
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А большая разница? Нульмодемный кабель и вперед.
    Хотя проще воспользоваться отладкой по Ethernet'у с помощью Visual SoftICE
     
  20. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Интересно, а почему никто не рекомендует книгу Свена Шрайбера "Недокументированне возможности Windows 2000"? По-моему достойный материал, хоть и читается довольно тяжело. Еще поиск в гугле по "intel manual ia32", английский там легкий, но без него как буд-то пол мозга отрезали