Утилиты Minifuzz и BinScope от Microsoft

21 окт. 2009 г. | | |

Недавно компания Microsoft выпустила две новые бесплатные утилиты - Minifuzz и BinScope. Главное назначение этих утилит - помочь сторонним разработчикам в проверке своих программ на соответствие требованиям безопасности. Скачать их можно по ссылке http://msdn.microsoft.com/en-us/security/cc421514.aspx, где можно найти и другие бесплатные и полезные утилиты :)

Утилита Minifuzz представляет собой инструмент для обнаружения ошибок в коде путем подачи приложению в качестве входных параметров случайных данных. Согласно стандарту безопасной разработки Microsoft SDL (Secure Development Lifecycle – жизненный цикл безопасной разработки), каждый алгоритм и программный модуль должен проходить масштабную проверку на наличие переполнений буфера и других распространенных уязвимостей путем тестирования случайными входными данными (fuzzing). Если крупные разработчики программных продуктов уже давно внедрили эту технологию для своих производственных процессов, то независимые разработчики до сих пор редко использовали подобные методики. С появлением свободно распространяемой утилиты Minifuzz входной барьер на пути к методике тестирования случайными входными данными значительно снижается.

Утилита BinScope Binary Analyzer предназначена для проверки исполняемого кода на соблюдение множества общепринятых правил написания кода. Она обеспечивает расширенную проверку результатов работы программистов путем анализа самих исполняемых файлов. Например, проверяет, какая версия компилятора использовалась при сборке программы – конечно, для ответственных задач необходимо использовать самую актуальную версию компилятора. Также утилита BinScope уведомит тестировщика о том, что файл был скомпилирован без ключа /GS, который эффективно предотвращает атаки на приложение с использованием переполнения буфера.

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

В последнее время компания Microsoft прилагает серьезные усилия по повышению качества не только собственных программ, но и инструментов разработки. Особенно это касается заботы о сторонних разработчиках Windows-приложений. Новые бесплатные утилиты Minifuzz и BinScope еще раз напоминают, что Microsoft не бросает этих разработчиков на произвол судьбы, что не может не радовать :)

Как проверить версию .Net Framework и установлен ли он вобще

15 окт. 2009 г. | | |

Типичная ситуация: есть приложение, использующее .Net Framework, и есть юзер, желающий использовать программу, но не имеющий .Net Framework. Итог: программа не запускается и выдает непонятную ошибку. И начинается поиск решения, как же проверить, установлен ли .Net Framework на конечной машине и требуемая ли версия установлена. Есть несколько вариантов действий - проверить реестр или проверить файловую систему. В первом случае воспользуемся веткой реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
Если тут существует ветка
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup
то в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
можно найти все установленные версии .Net.

Готовое решение этого варианта вы можете найти тут http://msdn.microsoft.com/en-us/library/ydh6b3yb.aspx
Во втором варианте просмотреть установленные версии можно %windir%\Microsoft.NET\Framework.

В любом случае, выполнить проверку из программы, написанной на .Net Framework, невозможно. Значит, надо писать утилиту на С++ или другом языке, не требующем .Net Framework. Решение, которое понравилось мне больше всего - это использование batch-файла. Например, мне нужно проверить, установлена ли версия 3.5 и , если нет, запустить установку. Вот что получается:

@ECHO OFF
SET FileName=%windir%\Microsoft.NET\Framework\v3.5
IF EXIST %FileName% GOTO Skip
ECHO.You currently do not have the Microsoft® .NET Framework 3.5 installed.
ECHO.This is required for MyApplication.
ECHO.
ECHO.The Microsoft® .NET Framework 3.5 will now be installed on you system.
ECHO.After completion setup will run MyApplication.
ECHO.
Pause
SET FileName=
Start /WAIT .\files\dotnetfx35.exe
ECHO ON
:Skip
Start .\MyApplication.exe
Exit

Заметьте, что данный скрипт не проверяет, установлен ли фреймворк. В любом случае, если не существует в файловой системе пути %windir%\Microsoft.NET\Framework\ будет устанавливаться .Net, а после окончания установки будет запущено приложение.

Дни разработчика в Краснодаре

8 окт. 2009 г. | | |

7 октября сего года прошел семинар "Дни разработчика'09" в Краснодаре, участником которого к превеликой моей радости мне посчастливилось быть.
Семинар состоял из трех докладов и серии вопросов-ответов. Конечно, мне как silverlight-разработчику, интересно было послушать доклад "Обзор возможностей Silverlight 3 и Expression 3". К сожалению, доклад был крайне обзорным - все это уже было опубликовано в блогах и на сайте microsoft, когда вышел Silverlight 3, поэтому того, чего мне хотелось услышать - более глубокого анализа технологии - не было. Но это не беда, потому что была открыта великая тайна - почему у silverlight нет поддержки Опера. :) Так же еще раз была отмечена тенденция перехода от Software and Services к Software as Services.
Что еще понравилось - вслух была произнесена магическая фраза "мы уже думаем о Silverlight 4", но на все вопросы ответ был "не располагаем информацией".
Понравился последний доклад "Возможности Windows 7 для разработчиков". Но больше всего понравились кофе-брейки :) Отменный кофе, хочу сказать. Да и печеньки у них неплохие :). Вобщем, Microsoft знает, что нужно разработчику - кофе и печеньки!

Вторая общекрымская торрентовка

6 окт. 2009 г. | | |

3-4 октября в Алуште, с. Лучистое, прошло Вторая общекрымская торрентовка, посвещенная дню рождения любимого и лучшего трекера torrents.ru.
Впечатлений - море! Впечатления - только положительные! Огромное спасибо организатору - Probeg, респект и уважуха! А так же огромное спасибо всем, кто приехал, спасибо за замечательную компанию! :) :) :) С нетерпением жду следующей торрентовки! Ни капли, ни минуты, ни секунды не жалею, что поехала, оно того стоило!

Об алгоритмах....

1 окт. 2009 г. | | |

Едут в одном вагоне четверо программистов и четверо пользователей. У пользователей четыре билета на четверых, а у программистов один. Приходит пора предъявлять билеты. Программисты запираются в туалете, приходит контролер. Стучится, из сортира высовывается рука и протягивает билет. Контролер уходит. Пользователи все видят и им завидно.
Едут все те же пользователи и программисты обратно. Но на этот раз у пользователей один билет на четверых, а у программистов - ни одного. Приходит пора проверки билетов. Пользователи запираются в сортир. Приходит один из программистов и стучится в дверь. Ему высовывают билет. Он берет билет, программисты запираются в другом сортире. Приходит контролер...
Мораль: не всякий алгоритм, разработанный системным программистом, подходит для рядового пользователя.
(c)перто