Windows - статьи




Ocho: мы строили, строили и наконец построили - часть 2


Кроме того, придется разобраться с клиентскими модулями: модулем BNClient размером 24 Кб, драйвером BXP Miniport SCSI Virtual Adapter (копии всех используемых файлов лежат в C:\WINNT\System32\BNTemp, 107 Кб) и самым ужасным файлом - VLDRMI.bin.

Ужасен этот файл не столько своим небольшим размером (всего 22 Кб, половина из которых - диагностические сообщения, однородные массивы и сообщения об ошибках), сколько полным отсутствием знакомых ориентиров вроде системных вызовов, поскольку на момент загрузки он работает в среде PXE bre-boot-OS, где, естественно, доступны какие-то системные вызовы, например BIOS, в том числе сетевые PXE, но, как это работает, придется изучать с нуля. Для дизассемблирования помогут такие подсказки:

  • сначала сверните строки в конце текста и однородные массивы по всему тексту - из-за неизвестной точки входа это не делается автоматически;
  • данные процедуры по соглашению кодеров vldrmi находятся за телом этой же процедуры, и, поскольку все происходит в одном сегменте, адресация таких "локальных переменных" часто осуществляется через CS;
  • выравнивание кода - по границам двойных слов, так что пару нулей часто означает границы процедур;
  • типичный пролог процедур: 66h, 60h, 6h, 1Eh - что в терминах ассемблера выглядит как:
pushad push es push ds

- или что-то в этом роде, после нескольких удачных попаданий остальные процедуры найдутся сами.

Есть еще небольшая наводка по поводу "где лежат параметры, которые изменяются в процессе настройки". Есть такая простая утилита fc (типа File Compare) - сделав копию с образа и изменяя параметры, можно обнаружить следующее (флажки 57C8-57C9 - последние байты в файле):

* Verbose Mode No Yes
[0013]   00 80
[57C8]   A7 27
* Subnet Mask bytes [2C-2D-2E-2F] маска подсети, первые байты старшие
    No Yes (установлены ненулевые значения)
[57C8]   4A 27
[57C9]   0B 0F
* Default Gateway bytes [30-31-32-33] адрес маршрутизатора, первые байты старшие
    No Yes (установлены ненулевые значения)
[57C8]   29 27
[57C9]   0C 0F
* Login Servise bytes [34-35-36-37] адрес сервера
    word [38-39] порт сервера
    No Yes (установлены значения, отличные от "по умолчанию")
[57C8]   10 27
[57C9]   0D 0F

На момент публикации статьи я уже продвинулся дальше, но сегодня моя цель - не выкладывать вам код, который даже и дезассемблировать-то нельзя (а fc - не дезассемблер, так что не придеретесь), а просто показать, что все делается, и сравнительно быстро. Задача предстоит сравнительно сложная, но детерминированно разрешимая.

Решив ее, вы немедленно станете героем дня, многие конторы мира начнут вас хотеть, а вы сами сможете создать вокруг себя движение - в общем, варианты на выбор. А остальные пусть очередной раз переписывают свое резюме, каждому, как говорится, свое.




Содержание  Назад