# Каспер изнутри

Общий Hi. Сегодня я расскажу вам удивительные вещи. Кого-то они порадуют; кто-то зло плюнет в экран; кто-то будет рвать волосы, причем не на голове. Однако, все это не важно.

Итак. Есть каспер, и есть авп. И есть его базы в формате .avc, коий раскладывается на составляющие программой AVPX. А внутри баз лежат coff obj-файлы. И вторым двордом в этих файлах......

Каким хуем, спросит наивный читатель, какой-то там дворд связан с конторой каспера?! Спокойно. Вот каким. В этом дворде хранятся дата и время _компиляции_ файла, то есть тот великий момент, когда сорец становится obj'ом.

Казалось бы, ну и что с того? Ан, не тут-то было. Из времен и дат создания лечащих вирусы obj'ей, можно извлечь весьмааа интересную информацию, например о том, как работает любимая нами контора.

Итак, были выполнены примерно следующие действия:

- Распаковать все имеющиеся в наличии (на январь 2001-го года) .avc-файлы
- Разбить все имеющиеся в .avc'шках 32-битные obj'и по некоторым критериям (см.ниже)
- Написать програмку, дампящую дату/время создания этих obj'ей
- Написать програмку, считающую статистику по полученным дампам и генерящую графики

Теперь о критериях.

1. Все имеющиеся obj'и (2590 штук). На графиках обозначены красным цветом.
2. obj'и от сентября 2000-го года и старше. На графиках обозначены желтым цветом.
3. obj'и, исходником которых является файл с расширением .asm (имена исходников прописываются во всех без исключения obj'ах). Замечу, что, согласно имеющейся информации, большинство таких файлов написано бездарным богдановым. На графиках обозначены зеленым цветом.
4. obj'и для win32- и win9X- вирусов. На графиках обозначены синим цветом.

Зависимость количества выпущенных OBJ'ей от времени суток:

час | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
всего | 1 | 1 | 1 | 3 | 0 | 1 | 0 | 1 | 0 | 3 | 22 | 95 | 154 | 267 | 314 | 207 | 245 | 286 | 356 | 287 | 206 | 118 | 19 | 4
последние | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 4 | 7 | 12 | 55 | 57 | 31 | 33 | 19 | 28 | 24 | 28 | 9 | 7 | 2
.asm | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 3 | 48 | 13 | 65 | 93 | 43 | 43 | 64 | 39 | 20 | 26 | 15 | 6 | 0
win32/9x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 2 | 8 | 13 | 12 | 10 | 6 | 13 | 26 | 9 | 12 | 4 | 4 | 0

Как видно, основная часть конторы начинает работать в 10 утра, а расходится в 8-9 вечера. Два пика наблюдаются где-то к 2-м часам дня и в 6 часов вечера. Можно предположить, что после двух у них обед. Конечно, эта инфа не такая уж и секретная... Просто радует сам факт ее обнаружения посредством анализа общедоступных баз.

Зависимость количества выпущенных OBJ'ей от дня недели:

день недели | Пн | Вт | Ср | Чт | Пт | Сб | Вс
--- | --- | --- | --- | --- | --- | --- | ---
всего | 550 | 530 | 473 | 429 | 315 | 178 | 116
последние | 43 | 118 | 33 | 41 | 56 | 20 | 9
.asm | 57 | 121 | 59 | 140 | 68 | 25 | 10
win32/9x | 11 | 24 | 24 | 27 | 12 | 12 | 13

Интуиция мне подсказывает, что, судя по графику, контора находится на второй стадии болезни Паркинсона. Иначе чем объяснишь такое рвение в понедельник, к пятнице сходящее на нет? Не могу удержаться, процитирую:

    <<...первый признак  опасности  состоит  в том,  что   среди   сотрудников
    появляется человек,  сочетающий  полную  непригодность  к  своему  делу  с
    завистью к чужим успехам. Ни то, ни  другое  в  малой  дозе  опасности  не
    представляет, эти  свойства  есть  у  многих.  Но  достигнув  определенной
    концентрации  (выразим  ее  формулой  N3Z5),  они  вступают  в  химическую
    реакцию.  Образуется  новое  вещество,  которое  мы  назовем  непризавием.
    Наличие его определяется по  внешним  действиям,  когда  данное  лицо,  не
    справляясь со своей работой, вечно суется  в  чужую  и  пытается  войти  в
    руководство. Завидев это смешение непригодности и зависти, ученый покачает
    головой  и  тихо  скажет:  "Первичный,  или  идиопатический,  непризавит".
    Симптомы его, как мы покажем, не оставляют сомнения.
       Вторая стадия болезни наступает тогда, когда носитель заразы хотя бы  в
    какой-то степени прорывается к власти. Нередко все начинается прямо с этой
    стадии, так как носитель сразу занимает  руководящий  пост.  Опознать  его
    легко по упорству, с которым он выживает тех, кто способнее его, и не дает
    продвинуться тем, кто может оказаться  способней  в  будущем.  Не  решаясь
    сказать: "Этот Шрифт чересчур умен", он говорит: "Умен-то он умен, да  вот
    благоразумен ли? Мне больше нравится Шифр". Не решаясь опять-таки сказать:
    "Этот Шрифт меня забивает", он говорит: "По-моему, у Шифра больше здравого
    смысла".  Здравый  смысл   -   понятие   любопытное,   в   данном   случае
    противоположное уму, и означает оно преданность рутине. Шифр  идет  вверх,
    Шрифт - еще куда-нибудь, и штаты постепенно  заполняются  людьми,  которые
    глупее начальника, директора или председателя. Если он второго сорта,  они
    будут третьего и позаботятся о том, чтобы их подчиненные были  четвертого.
    Вскоре все станут соревноваться в глупости и притворяться еще глупее,  чем
    они есть.
       Следующая (третья) стадия наступает, когда во  всем  учреждении,  снизу
    доверху, не встретишь и капли разума. Это и будет коматозное состояние,  о
    котором мы говорили в первом абзаце. Теперь учреждение можно смело считать
    практически мертвым. Оно может пробыть в этом состоянии лет двадцать...>>
                                      "Законы Паркинсона"  (c) Сирил Паркинсон

Теперь рассмотрим зависимость количества выпущенных OBJ'ей от года:

год | 1996 | 1997 | 1998 | 1999 | 2000 | 2001
--- | --- | --- | --- | --- | --- | ---
всего | 911 | 222 | 317 | 422 | 709 | 8
последние | 0 | 0 | 0 | 0 | 312 | 8
.asm | 35 | 12 | 36 | 108 | 285 | 4
win32/9x | 3 | 3 | 17 | 45 | 55 | 0

Комментировать тут особо нечего, ну, разве что кроме какой-то глобальной перекомпиляции в 96-м.

Теперь вот о чем вспомним. Как-то каспер вякал, будто они свои новые базы тестируют чуть ли не по месяцу. Так вот, это - наглая ложь. Вот файлик, ircwormd.c, был скомпилен, когда? - 'Fri Jan 05 00:25:10 2001', то бишь ночью. А апдейт, в коий он был включен, вышел в этот же день.

Подведем итоги. К чему все это было надо? Во-первых, плюнули в рожу касперу. Во-вторых, показали, как можно круто облажаться используя отстойный майкрософтовский софт (я думаю, что 32-битные obj'и они masm'ом компиляют). В третьих, выяснили, что контора, в общем-то, работает весьма регулярно и с высокой вероятностью в конторе постоянно находится хоть кто-то способный писать нечто на C и компилять obj'и. Причем, иногда народ там засиживается допоздна. В четвертых, выяснили время, когда контора на 99% неактивна -- с часа ночи до 8-ми утра. В пятых, мы знаем, что в субботу/воскресенье контора генерит obj'и лишь на треть своей мощности. Далее, мы теперь знаем, что на 400-500 трепаков под винду, obj'и приходится писать примерно на каждые 100, то есть на четверть.

И в заключение (критика должна быть конструктивной!) процитирую еще немного из Паркинсона:

    <<...на  третьей  стадии  сделать  нельзя ничего. Учреждение   практически
    скончалось. Оно может обновиться, лишь переехав  на  новое  место,  сменив
    название и всех сотрудников. Конечно, людям экономным захочется  перевезти
    часть старых сотрудников, хотя бы для  передачи  опыта.  Но  именно  этого
    делать нельзя. Это верная гибель - ведь заражено все. Нельзя брать с собой
    ни людей, ни вещей, ни  порядков.  Необходим  строгий  карантин  и  полная
    дезинфекция. Зараженных сотрудников надо снабдить хорошими  рекомендациями
    и направить в наиболее ненавистные вам учреждения, вещи и дела  немедленно
    уничтожить, а здание застраховать и поджечь. Лишь когда все выгорит дотла,
    м