В каких проектах вы учавствовали?

Тема в разделе "WASM.HEAP", создана пользователем x64, 7 ноя 2010.

  1. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Привет.

    В каких более-менее серьёзных системных и не очень проектах вам лично приходилось участвовать? Более-менее серьёзными с точки зрения разработки я считаю руткиты/буткиты, классические AVs и проактивки, персональные фаерволы и детекторы аттак, виртуальные диски, драйвера файловых систем, сетевые фильтры и, в частности, полноценные фильтры трафика (например, шейперы, антибаннеры и т.п.), системы-ловушки (HoneyPots), сетевые (мини-)редиректоры и другие ядерные вещи. Цели особо никакой не преследую, просто интересно, чем коллеги занимаются. Пишите, над чем работали, если это не большой секрет, желательно с указанием ссылки на продукт, ну и хоть какой-нибудь технической информации типа какие технологии использовали, как архитектуру планировали, с какими сложностями сталкивались по ходу и т.д. Интересно же.

    Спасибо.
     
  2. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    x64
    промышленный шпионаж замаскированный под соц сеть-опрос
     
  3. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Не думаю, что я спрашиваю что-то сверхсекретное. В конце концов, секретное можно и не рассказывать, я не настаиваю. Просто мне казалось, что людям было бы интересно рассказать о своём опыте и, что ещё лучше, узнать об опыте коллег. Именно в этом изначальная цель форумов. Но похоже WASM исключение, у вас просто шпиономания, я лишь пообщаться хотел.
     
  4. Tronix

    Tronix Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    122
    Ммм,в очень серьезных не участвовал, но.. Пишем по маленьку Midlet Pascal - среда программирования на паскале, генерящая сразу в java байт-код (мидлеты для телефона).. Очень удобно на мой взгляд, если не знать явы, а паскаль в этой стране каждый школьник знает. Но сам компилятор конечно не я написал. Я просто списался с автрором, уговорил его передать мне сорцы, нашел заинтересованных людей из англии, австралии и тд. И стартанули на Sourceforge проект, который постепенно допиливаем. Так что писать для сотовых очень просто - велкам ту http://sourceforge.net/projects/midletpascal/ :)
     
  5. Tronix

    Tronix Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    122
    А, тьфу ты, надо все-таки сообщения до конца читать. Вы тут про руткиты а я про юзер френдли апликейшн. Ну из последнего - чтение/запись NTFS из boot сектора, в смысле до загрузки винды могу и читать и писать куда угодно. Но это конечно не может считаться серьезным проектом, так... Просто интересно было поработать с файловой системой отличной от классической фат. А вообще я не хакер, пишу все-таки по большей части мелкие но юзер-френдли утилиты. Нет, пробовал конечно в школе не резедентный ком-вирус, но на том все и закончилось. Может оно и к лучшему.
     
  6. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    Дашь глянуть? :)
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    x64
    > В каких более-менее серьёзных системных
    > и не очень проектах вам лично приходилось участвовать?
    McAfee NTR (гуглим), энтерпрайз проект, аппаратно програмное решение типа IPS. там два двига. один из них FLIPS (AC-деревья + BM), этот двиг писал мой коллега, с которым мы в одном кабинете сидим. другой двиг (кодовое название шелл-код детектор) целиком лежит на мне от постановки задачи до имплементации. писан на си на основе моделирования мышления хакеров, которое предсказуемое и шаблонное и потому были пойманы все известные мне zero-days. потом к нем прикрутил движок js, потом имитатор компилятора as для распознавания атак на флеш через jit, потом пошли pdf'ы и их анализ...

    всего 10k строк на си с комментами. это тот проект на который можно сослаться. во всяком случае в гугле он есть, а с продуктом поставляются мои движки оформленные для удобства так же и в виде утилит командной строки (если нужно проверять файлы, а не следить за трафиком), в утилитах -- мое имя, точнее ник.

    другой продукт с кодовым названием file scan это динамический анализатор в котором удалось воплотить все идеи изначально нацеленные на HIPS. но HIPS наш тим не пишет, но появилась идея -- а что если запустить файл на виртуалке и натравить на нее HIPS? тут и детекция инжектов и отслеживание обращение к разным системным структурам и вообще чистое системное программирование. ну а так же проверка офисных файлов -- один pdf чего стоит. сейчас это ключевой проект нашего подразделения, но учитывая что наше подразделение очень ограничено в ресурсах, но над ним работают всего три ключевых девелопера -- я (системная часть), директор тхреат интеллесе (организация инфраструктуры и ТЗ писателям интерфейса) и еще один си-программист прикладного уровня. так что моя доля в проекте весьма существенна (и на мне вся системная часть, т.е. детекция плохих файлов), остальное -- базы данных, проверка уже проверенных ранее файлов по md5, и так далее -- это за пределами моей компетенции.

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

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

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

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    kaspersky
    ещё как интересно
     
  9. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    http://www.quest.com/changeauditor-for-active-directory/
    драйвер-фильтр файловой системы - плоский си + ассемблер 32-64 бита = 7000 строк
    дамперы, хуки, инжекты - по всему проекту

    http://www.securitycode.ru/products/sn_vmware/
    ндис интермедиейт драйвера в количестве 3-х штук и модули управления к ним
    плоский си примерно по 10000 строк

    остальное пока не могу рассказать :)
     
  10. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    wsd
    > ещё как интересно
    а что именно интересно? технологическая часть или организационная? ну а грабли у меня вполне классические и начинающие с того, что концепт проекта неоднократно меняется по ходу дела и потому возникает странный гибрид вертолета с подводной лодкой с паровой турбиной, приводимой в действие атомным реактором... у меня чудом удалось правильно разграничить абстракции в некоторых местах, поделив двиг на фрон-энд и бак-энд. самое главное -- это нащупать истинную суть идеи и оформить ее в виде программного кода, убрав все лишнее. вместо добавления новых слоев абстракций (проблема современного программирования) попробовать выкинуть как можно больше "запчастей" и убедиться, что программа все еще работает. и продолжить выбрасывать дальше.

    KISS принцип меня пока еще что ни разу не подвел. "если программа становится слишком сложной, значит, мы пошли не тем путем". и чем меньше строк в программе, тем она круче. то есть можно топтать клаву, потом долго дебажить, а в перывах думать... а можно за пол-года не написать ни одной строчки, перебрав в уме сотри вариантов и с удивлением обнаружить что финальная концепция проекта где-то уже встречалась... и 99% кода уже написано до нас. главное понять какой именно код нам нужен для решения данной задачи и какие именно абстракции выбрать.

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

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

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

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    x64, думаю, ты и сам знаешь, каким проектом я занимаюсь и сколько там грабель. Язык: С + asm. Очень сложно, но и очень приятно, когда в очередной раз в очередном тесте дружно нагибаешь все антивири.
     
  12. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Честно говоря, по нику не очень узнаю. Напомни в жаббер, что ли, пообщаемся, если есть о чём.

    В любом случае, думаю, какие-то детали было бы интересно услышать, если не мне, то другим коллегам. Делись, чем не жалко.
     
  13. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    kaspersky
    спасибо
     
  14. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    Да, в общем, уже не жалко.

    Самое главное в софтверном проекте- это изначальная архитектура. Не архитектура кода, а именно архитектура программного продукта. Угадал с ней- и все остальные доработки гладко и плавно ложатся в канву базовой идеологии и первоначального кода. Не угадал- придётся переписывать всё с нуля, рано или поздно, что выливается в потери времени и денег. Мне повезло, я угадал всё правильно с самого начала.

    Всё остальное- дело техники и толщины кожного покрова заднего мозга. :) Хотя, если пишешь серьёзный системный софт под Винду, то нужно быть готовым к крупным (зачастую, очень неприятным) сюрпризам, таким, как:

    1. Неполнота (или прямые ошибки в описании) MSDN,

    2. Абсолютно недокументированные внутренние пакеты данных, которые нужно контролировать (в моём случае это были LPC-пакеты),

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

    Самое сильное, конечно, это был разбор LPC-пакетов. Помню, мучился с одним из них, и вдруг прямо на глазах бессистемный поток двордов превратился в стройную последовательность осмысленных данных. Тот момент, наверное, никогда не забуду.

    P.S. Продажникам МакАфи можно лишь рукоплескать, впаривать говно под видом конфетки надо уметь.
     
  15. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Из последнего - реверсинг сетевого протокола одной асу и написание своего клиента к ней. А чем строчки считаете? Ни разу не делал. А если считать по размеру, то около 1 мегабайта написано. Наверное, по размеру даже правильней, чем по строчкам )
     
  16. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Это как в старом анекдоте. Пришел клиент с поломанным авто к старому еврею-автомеханику и просит починить.
    Еврей ходил, ходил вокруг до около целый час, затем взял молоток стукнул где-то в движке и мотор таки заработал.
    Клиент спрашивает сколько он должен. Механик еврей и отвечает: -10 рублей и 20 копеек. За что такая цена, почему 20 копеек спрашивает клиент, вы всего-то один раз молотком ударили, на что еврей отвечает: - 20 копеек за удар, а 10 рублей за то, что знал куда. :)
     
  17. CrystalMS

    CrystalMS New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    51
    Самый большой проект - около 250 тысяч строк на си с асм вставками. Из недавних драйвер-фильтр на си в 51 331 строчку, включая { }.
     
  18. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    neutronion
    Это не анектод, это былица о товарище Ford.
     
  19. Mysterion1960

    Mysterion1960 New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2010
    Сообщения:
    1
    x64
    Последнее что делал,это модуль для linux, скажем так, для модификации данных веб сервера)
    Показал на этом форуме разработку, за что и был забанен)
     
  20. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Библиотека - файловый менеджер для iphone= MC++/C++ 4500, Обертка для протокола общения клиента и сервера в виде SSL, клиент сервер без исходников= 2000 C++, Виртуальная клава для DirectX приложений(для игры на терминале оплаты), игра без исходников, 2500 C++.