четверг, 30 декабря 2010 г.

AddMandatoryAce

а вот например на старости лет потребовалось мне зарегистрировать под vista rpc интерфейс на named pipes. И все оно замечательно работает, за исключением клиентов с low integrity level - при вызове методов моего интерфейса они обламывались с ошибкой 5 (ERROR_ACCESS_DENIED)
Гугл сказал что нужно в RpcServerUseProtseqEp отдавать правильно настроенный security descriptor, но как его правильно настраивать для указания integrity level не особо помог
Соотв-но ниже небольшой кусок кода, который таки работает

Practical File System Design with the Be File System

вот дочитываю давеча subj - в главе про тестирование файловой системы автор жжет напалмом:
At this stage the testing group could still corrupt the file system, but it took a reasonable amount of effort (i.e.,more than15 minutes)
Before the first release of BFS, the system stabilized to the point where corrupting a hard disk took significant effort and all the real-world tests would run without corruption for 24 hours or more. At first customer ship, the file system had one known problem that we were unable to pinpoint but that would only happen in rare circumstances. By the second release (two months later) several more bugs were fixed, and the third release (another two months later) saw the file system able to withstand several days of serious abuse.

среда, 29 декабря 2010 г.

c запозданием

спешу поздравить всех причастных с днем рождения Отца-Основателя Джона фон Неймана

checked vista on virtual box

пишет мне нечеловеческим голосом:
*** Assertion failed: Missing StreamContext Support: post IRP_MJ_CREATE, not a paging file: (volume->FileSystemType == FLT_FSTYPE_MS_NETWARE) || FlagOn(irpSp->Flags,SL_OPEN_PAGING_FILE)
***   Source File: d:\vistartm\base\fs\filtermgr\filter\fltmgr.c, line 703

и так без конца
чо ей от меня надо то например ?

Update: а сегодня оно меня дико порадовало следующим assert:
*** Assertion failed: The system BIOS on this machine does not properly support the processor.  The system BIOS did not load any microcode update.A BIOS containing the latest microcode update is needed for system reliability.
(CurrentUpdateRevision != 0)
***   Source File: d:\vistartm\base\hals\update\intelupd\update.c, line 440

хочу странного

а существует ли в природе декомпилятор mof файлов от wmi ?
а то вот например есть всякие разные дрова с неблагозвучными именами типа yk62x86.sys, регистрирующие в системе over 9000 145 wmi GUIDENTRYs, которые непонятно зачем и что делают. Учитывая что через wmi можно вызывать даже методы (работающие в kernel mode) - чо-то мне сцыкотно иметь подобных крокодилов без присмотра

Update: бесчеловечные опыты показали, что в драйверах в ресурсе MOFDATA лежит ровно то же самое текстовое представление, только пожатое алгоритмом CMRCICompression. Например заголовок занимает 0x10 байт:
46 4F 4D 42 01 00 00 00 │ 53 67 00 00 64 70 03 00
первый dword - сигнатура FOMB
следующий - флаг наличия компрессии (1 означает что таки да)
следующий - размер сжатых данных
последний - размер распакованных данных
Можно канешна заморочиться и вырипать код распаковки, но на скорую руку проще вызвать из mofd.dll неэкспортируемую ф-цию CMofLexer::CreateBufferFromBMOF :-)

суббота, 25 декабря 2010 г.

Be fs

а вот например читаю я тут давеча Practical File System Design with the Be File System (довольно попсовая книжка) и думаю - надо бы посмотреть как отдельные интересные вещи (вроде блокировок b+trees атрибутов и live queries) реализованы
Есс-но первым делом полез в сорцы linux ("динамичная среда, которая лучше поддерживает новое оборудование и самые передовые технологии", бгг) и вижу примерно следующее:
BeOS file system (BeFS) support (read only) (EXPERIMENTAL)
Notable features include support for arbitrary attributes on files and directories, and database-like indices on selected attributes. (Also note that this driver doesn't make those features available at this time)
 не осилили (c)

четверг, 23 декабря 2010 г.

open-source windows file system driver

если кто не знал например - Ext2Fsd
сорцы местами поучительны, правда комментариев в коде не особо много

среда, 22 декабря 2010 г.

!kwmi

а вот есть такая недокументированная команда в windbg например
и говорит она мне примерно следующее:
Displaying specific guid info not currently supported...
Displaying all guids not currently supported...
Displaying specific provider info not currently supported.
это все патамушта ялузир, да ?

пятница, 17 декабря 2010 г.

books for driver writers

нас тут периодически спрашивают как я дошел до жизни такой научился писать дрова и какие книжки для этого нужно прочесть
Я тут подумал да и решил перечислить всякое лично прочитанное пролистанное - может и пригодитца кому
Прежде всего хочу заметить что в этойстране своего железа не делают, так что мычание криса касперски всяких странных русскоговорящих персонажей мне неинтересно по определению. Далее - удивительно, но книжек про написание дров под windows не особо и много. Что еще более удивительно - большинство книжек имеют весьма почтенный возраст, но от этого нисколько не утратили актуальности

общечеловеческое для общего развития:
  • Andrew Tannenbaum Modern Operating Systems - читать крайне осторожно. В свое время некий финский школьник со странным именем линус, наколовшись мульки сраной обчитавшись данной книжки, придумал свою собственную жалкую пародию на unix
  • tcp/ip illustrated - 3 тома комиксов понятно про что
  • Bill Blunden Memory Management: Algorithms and Implementations In C/C++ - довольно попсовая, но на удивление познавательная книжка про алгоритмы управления памятью
  • Maurice Herlihy & Nir Shavit The Art of Multiprocessor Programming - дико тяжкая книжка с тоннами матана. Но зато ! О, зато вы будете точно знать как устроены механизмы синхронизации и почему именно так, а не как вам бы хотелось
Про анальное рабство microsoft windows
  • David Solomon & Mark Russinovich Windows Internals - можно брать любое издание и читать с любой страницы. Объясняет почему windows устроена внутри именно так, а не иначе. Классика и must read
  • Jeffrey Richter Programming Applications for Microsoft Windows - аналогично с упором на user mode
  • Sven Schreiber Undocumented Windows 2000 Secrets - дико угарная книжка про внутренности w2k, причем даются уже вполне нормальные примеры программирования в kernel mode
Собственно про написание дров под windows:
Ну и про отладку (а синяки вы будете видеть очень часто, бгг) - Daniel Pravat & Mario Hewardt Advanced Windows Debugging, после прочтения которой вы научитесь наконец пользоваться windbg и выкините ollydbg на помойку

Наверняка я забыл чего-нть

четверг, 16 декабря 2010 г.

openbsd ipsec backdoor

надеюсь все уже читали
My NDA with the FBI has recently expired, and I wanted to make you aware of the fact that the FBI implemented a number of backdoors and side channel key leaking mechanisms into the OCF, for the express purpose of monitoring the site to site VPN encryption system implemented by EOUSA, the parent organization to the FBI. Jason Wright and several other developers were responsible for those backdoors, and you would be well advised to review any and all code
commits by Wright as well as the other developers he worked with originating from NETSEC.
тысячи глаз, ага-ага

воскресенье, 12 декабря 2010 г.

люто-бешенно завидую

нью-йоркским издателям
это ж какая роскошная работа у них - целых 5 (!) дней подряд им не нужно распевать корпоративные гимны по утрам с умным видом сидеть на бессмысленных совещаниях, отвечать на сотни не менее бессмысленных писем с пометкой urgent и вообще всячески изображать из себя члена общества
с другой стороны мне например сроду не придет в голову порочная мысль "приходить на работу раньше всех". да и "уходить последним" впрочем тоже, томущо после 22:00 в этом проклятом городе бухло больше не продают

суббота, 11 декабря 2010 г.

bug in msdn samples

я тут давеча искал примерчик использования mailslots и нашол сей чудный кусок кода на msdn
Граждане создают event для OVERLAPPED и мало того что не ждут на нем, но и не закрывают его во многих случаях
Использовать такие примеры категорически не рекомендуется

mailslot owner

например под xp sp2 владельца mailslotа можно выявить примерно так (в данном случае мой тестовый процесс PID EA0 создал mailslot "\sample_mailslot" с handle 7E8):

понедельник, 6 декабря 2010 г.

четверг, 2 декабря 2010 г.

tcp_dcerpc_auditor.rb

мне кажется metasploit занимается совершенно социалистическими приписками - например из их списочка IIDs гугл практически ничего не знает про следующие:
  • 04fcb220-fcfd-11cd-bec8-00aa0047ae4e
  • 0a5a5830-58e0-11ce-a3cc-00aa00607271
  • 0c821d64-a3fc-11d1-bb7a-0080c75e4ec1
  • 0da5a86c-12c2-4943-30ab-7f74a813d853
  • 209bb240-b919-11d1-bbb6-0080c75e4ec1
  • 359e47c9-682e-11d0-adec-00c04fc2a078
  • 386ffca4-22f5-4464-b660-be08692d7296
  • 53e75790-d96b-11cd-ba18-08002b2dfead
  • 56c8504c-4408-40fd-93fc-afd30f10c90d
  • 5c89f409-09cc-101a-89f3-02608c4d2361
  • 6bffd098-0206-0936-4859-199201201157
  • 6e17aaa0-1a47-11d1-98bd-0000f875292e
  • 7af5bbd0-6063-11d1-ae2a-0080c75e4ec1
  • 7e048d38-ac08-4ff1-8e6b-f35dbab88d4a
  • 82980780-4b64-11cf-8809-00a004ff3128
  • 8d09b37c-9f3a-4ebb-b0a2-4dee7d6ceae9
  • 93f5ac6f-1a94-4bc5-8d1b-fd44fc255089
  • 9b3195fe-d603-43d1-a0d5-9072d7cde122
  • a4c2fd60-5210-11d1-8fc2-00a024cb6019
  • aa177641-fc9b-41bd-80ff-f964a701596f
  • ce1334a5-41dd-40ea-881d-64326b23effe
  • d2d79dfa-3400-11d0-b40b-00aa005ff586
  • d7f9e1c0-2247-11d1-ba89-00c04fd91268
  • e248d0b8-bf15-11cf-8c5e-08002bb49649
  • e76ea56d-453f-11cf-bfec-08002be23f2f
  • ec02cae0-b9e0-11d2-be62-0020afeddf63
  • eff55e30-4ee2-11ce-a3c9-00aa00607271
  • fc13257d-5567-4dea-898d-c6f9c48415a0
  • ffe561b8-bf15-11cf-8c5e-08002bb49649

среда, 1 декабря 2010 г.

higher-order perl

читаю давеча subj и в главе 5.4 вижу следующий кусок кода:

sub fib
{
  my $n = shift;
  my($s1,$s2,$return);
  while(1)
  {
    if ( $n < 2 ) {
      return $n;
    } else {
      if ( $BRANCH == 0 ) {
        $return = fib($n-2);
      } elsif ( $BRANCH == 1 ) {
        $s1 = $return;
        $return = fib($n-1);
      } elsif ( $BRANCH == 2 ) {
        $s2 = $return;
        $return = $s1 + $s2;
      }
    }
  }
}

но ведь это же не работает ни разу, потому что переменная $BRANCH при любом вызове равна нулю ! wtf ?
И самое главное - зачем это все, если можно обойтись без рекурсии вот примерно так:

sub fib
{
  my $n = shift;
  my $f1 = 0;
  my $f2 = 1;
  return 1 if ( $n < 2 );
  my $tmp;
  for ( my $i = 1; $i < $n; $i++ )
  {
    $tmp = $f2 + $f1;
    $f2 = $f1;
    $f1 = $tmp;
  }
  return $f1 + $f2;
}