<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Egor&#039;s blog. Speak no lies. &#187; Разработка</title>
	<atom:link href="http://www.egorka.org/category/%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.egorka.org</link>
	<description>Moving forward</description>
	<lastBuildDate>Tue, 13 Dec 2011 15:23:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Вот она, рыба моей мечты!</title>
		<link>http://www.egorka.org/2011/10/07/ram-2/</link>
		<comments>http://www.egorka.org/2011/10/07/ram-2/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 20:36:44 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1226</guid>
		<description><![CDATA[64 га.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.egorka.org/wordpress/wp-content/uploads/2011/10/IMG00015.jpg"><img class="alignnone size-large wp-image-1227" title="IMG00015" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/10/IMG00015-562x450.jpg" alt="" width="562" height="450" /></a></p>
<p>64 га.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/10/07/ram-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Осторожно, орудуют дебилы</title>
		<link>http://www.egorka.org/2011/08/10/retards-3/</link>
		<comments>http://www.egorka.org/2011/08/10/retards-3/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 16:59:37 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1191</guid>
		<description><![CDATA[Начинаем новый проект, вендор высылает нам &#8220;форму технического соответствия&#8221;. Ну, там, вопросы обычные: сколько у вас пропускная способность, какие файрволы, сколько народу, писаетесь ли вы по ночам. Чудно, конечно, но некоторые требуют &#8211; бог с ними, у нас секретов почти нет. Но эти отличились: попросили приложить 6 замеров скорости и трейсроут, сгенеренный общедоступным сайтом типа [...]]]></description>
			<content:encoded><![CDATA[<p>Начинаем новый проект, вендор высылает нам &#8220;форму технического соответствия&#8221;. Ну, там, вопросы обычные: сколько у вас пропускная способность, какие файрволы, сколько народу, <del>писаетесь ли вы по ночам</del>. Чудно, конечно, но некоторые требуют &#8211; бог с ними, у нас секретов почти нет. Но эти отличились: попросили приложить 6 замеров скорости и трейсроут, сгенеренный общедоступным сайтом типа network-tools.com до их площадки. В смысле, на сайте нет Java-апплета или какой-то клиентской части вообще, просто вывод трейсроута с этого левого сервера в окошко браузера. Хотел спросить, сколько лет уже они собирают один и тот же трейсроут с сайта до них, и какое отношение он имеет к нашему сервису вообще, но потом решил, что с такими лучше не спорить. Себе дороже.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/08/10/retards-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Утро под знаком фрастрейшен</title>
		<link>http://www.egorka.org/2011/03/23/firefox4/</link>
		<comments>http://www.egorka.org/2011/03/23/firefox4/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 14:35:15 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1147</guid>
		<description><![CDATA[В четвертом файрфоксе в контекстном меню гиперссылки пункты &#8220;Open in New Tab&#8221; и &#8220;Open in New Window&#8221; поменяли местами. Всё утро из моего кабинета доносится злобное шипение и проклятья.]]></description>
			<content:encoded><![CDATA[<p>В четвертом файрфоксе в контекстном меню гиперссылки пункты &#8220;Open in New Tab&#8221; и &#8220;Open in New Window&#8221; поменяли местами. Всё утро из моего кабинета доносится злобное шипение и проклятья.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/03/23/firefox4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Апгрейдик</title>
		<link>http://www.egorka.org/2011/03/14/upgrade/</link>
		<comments>http://www.egorka.org/2011/03/14/upgrade/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 22:16:13 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1137</guid>
		<description><![CDATA[Эх, вот я развернусь! Землю крестьянам, заводы рабочим! От каждого по способностям, каждому по потребностям! Буду я строгий, но справедливый, как Лаврентий Палыч&#8230;]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1138" title="taskmanager" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/03/taskmanager.jpg" alt="" width="600" height="474" /></p>
<p>Эх, вот я развернусь! Землю крестьянам, заводы рабочим! От каждого по способностям, каждому по потребностям! Буду я строгий, но справедливый, как Лаврентий Палыч&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/03/14/upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Делаем из одного телефона два</title>
		<link>http://www.egorka.org/2011/02/14/bifurcate/</link>
		<comments>http://www.egorka.org/2011/02/14/bifurcate/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 17:36:09 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1097</guid>
		<description><![CDATA[Был обычный телефон: Стал один необычный и один модный тачскрин: Делается это очень просто: Можете попробовать дома и убедиться, эта хрень реально работает!]]></description>
			<content:encoded><![CDATA[<p>Был обычный телефон:</p>
<p><img class="alignnone size-large wp-image-1098" title="IMG00001" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/02/IMG00001-600x450.jpg" alt="" width="600" height="450" /></p>
<p>Стал один необычный и один модный тачскрин:</p>
<p><img class="alignnone size-full wp-image-1101" title="IMG00003" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/02/IMG00003.jpg" alt="" width="600" height="450" /></p>
<p>Делается это очень просто:</p>
<p><img class="alignnone size-large wp-image-1100" title="IMG00002" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/02/IMG00002-600x450.jpg" alt="" width="600" height="450" /></p>
<p>Можете попробовать дома и убедиться, эта хрень реально работает!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/02/14/bifurcate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Кашпировский наносит ответный ударъ</title>
		<link>http://www.egorka.org/2011/02/10/kaspersky/</link>
		<comments>http://www.egorka.org/2011/02/10/kaspersky/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 21:06:55 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[антивирусы]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1094</guid>
		<description><![CDATA[Понравился ещё один момент в истории с Касперским. Попавший в паблик файл называется KASPERSKY.AV.2008.SRCS.ELCRABE.RAR. Так вот этот самый ElCrabe, оказывается, ковыряет продукты компании не первый день &#8211; публиковал статью про недостатки эмулятора, а также имеет блог, где поливает Касперского и Ко говном и публикует ссылки на эксплоиты к их творениям (вероятно, собственного сочинения). То, что [...]]]></description>
			<content:encoded><![CDATA[<p>Понравился ещё один момент в <a href="http://www.egorka.org/2011/01/28/kaspersky-source-code/">истории с Касперским</a>. Попавший в паблик файл называется KASPERSKY.AV.2008.SRCS.ELCRABE.RAR. Так вот этот самый ElCrabe, оказывается, ковыряет продукты компании не первый день &#8211; публиковал <a href="http://habrahabr.ru/blogs/infosecurity/104206/">статью</a> про недостатки эмулятора, а также имеет <a href="http://elcrabe.blogspot.com/">блог</a>, где поливает Касперского и Ко говном и публикует ссылки на эксплоиты к их творениям (вероятно, собственного сочинения). То, что сами бинарники кряков (в т.ч. для самого себя) антивирус относит к вредоносному ПО, ни для кого не новость, но вот это несколько озадачило:</p>
<p><img class="alignnone size-full wp-image-1095" title="kav" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/02/kav.jpg" alt="" width="369" height="378" /></p>
<p><em>А я только &#8220;Каштанку&#8221; читал! Хошь за жопу укушу? (С) Гоблин.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/02/10/kaspersky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Исходники Касперского</title>
		<link>http://www.egorka.org/2011/01/28/kaspersky-source-code/</link>
		<comments>http://www.egorka.org/2011/01/28/kaspersky-source-code/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 23:37:14 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1049</guid>
		<description><![CDATA[Уже даже к Ассанджу ходить не надо, чтобы узнать, что что-то там у Евгения Валентиновича утекло и растеклось по просторам всемирной П, аки кефир. Ради интереса скачал 180-метровый RAR с исходниками и всякими приблудами, посмотрел [как баран на новые ворота]. Не уверен, что это KIS 2008, как декларируют пираты, но, в любом случае, исходники довольно [...]]]></description>
			<content:encoded><![CDATA[<p>Уже даже к Ассанджу ходить не надо, чтобы узнать, что что-то там у Евгения Валентиновича утекло и растеклось по просторам всемирной П, аки кефир. Ради интереса скачал 180-метровый RAR с исходниками и всякими приблудами, посмотрел [как баран на новые ворота]. Не уверен, что это KIS 2008, как декларируют пираты, но, в любом случае, исходники довольно старые. Любопытства для выкусил awk&#8217;ом все комментарии из *.c, *.cpp, *.h и txt, вот самые запомнившиеся:</p>
<blockquote><p>// TRUE &#8212; &#8230;мать, &#8230;мать, &#8230;мать!!!</p></blockquote>
<blockquote><p>// эти балуны просто задолбали &#8230;</p></blockquote>
<blockquote><p>// имя может состоять не только из имени, но и из говна+имя. Нам нужно тольки имя.</p></blockquote>
<blockquote><p>// (Д.Дж.Круглински, &#8220;Основы VISUAL C++&#8221;, глава 14, с.248-250)</p></blockquote>
<blockquote><p>// uncomment this when Petrovich implemtents UTF-8 support for Prague strings</p></blockquote>
<blockquote><p>// no params &#8211; хавайся кто может</p></blockquote>
<p>Остальное под катом, чтобы не нервировать непосвященных.</p>
<p><span id="more-1049"></span></p>
<blockquote><p>// Fucked VC calculates second argument first :(</p></blockquote>
<blockquote><p>// КОСТЫЛЬ: вообще это надо делать под веткой if (v_major == 6 &amp;&amp; v_minor == 0 &amp;&amp; v_mp &lt;= 2)<br />
// но т.к. при апгрейде с 303 и 411 SettingsVersion устанавливается в свежую версию, то<br />
// этот код не выполняется, и получается жопа.</p></blockquote>
<blockquote><p>/**/<br />
// TEST !!!!!!!!!<br />
/*/<br />
{<br />
const char * l_teztTest = &#8220;fuck nacizm sex&#8221;;</p></blockquote>
<blockquote><p>/* Кронгениально Киса!<br />
Но есть неудобство:<br />
Здесь полный путь который могет не влезть в короткий PROCNAMELEN (а искать сначала последний бекслэш ломает)</p></blockquote>
<blockquote><p>// Пипец всему живому !</p></blockquote>
<blockquote><p>// Attention, this filed may be equ 0 (if nafig ne nugni :) )</p></blockquote>
<blockquote><p>// Note this hack by some unknown reasons fixes TSL leak under Applicaiton Verifier on Windows XP</p></blockquote>
<blockquote><p>// Очень подлая ошибка заключается в том, что у TNSCollection<br />
// был пустой деструктор и он естественно не освобождал массив указателей<br />
// на элементы коллекции items ( void **items ).<br />
// Пока TNSCollection и все что от нее<br />
// происходит создается с помощью new &#8211; все OK т.к. механизм destroy<br />
// вызывает shutDown() которая вызывает freeAll(), что приводит к<br />
// установке count=0, ну а потом setLimit(0) вытирает items ( setLimit(0)<br />
// освобождает items только при условии, что count равен нулю !!!). Механизм<br />
// конечно не из наглядных, но, как говорится хозяин &#8211; барин, работало бы !<br />
// Но позабыв о деструкторе, &#8220;товарищи&#8221; из Borland позабыли также о том, что<br />
// объект ipstream имеет своим членом TPReadObjs objs, а TPReadObjs через два<br />
// поколения происходит от злополучной TNSCollection и при уничтожении<br />
// ipstream память под items в TPReadObjs objs не освобождается. Далее эта<br />
// ошибка благополучно передается по дереву в iopstream и fpstream ( ох уж<br />
// это объектно-ориентированное программирование !!!). Короче плохо, просто<br />
// неприлично ошибаться в базовых классах.<br />
//                                                        Рязанов Д.В.</p></blockquote>
<blockquote><p>// чего вообще эта функция хочет?<br />
// ??? нужен он кому-нибудь без инициализации ???<br />
//!! ? это надо??</p></blockquote>
<blockquote><p>// криво<br />
// Сделано криво но работает<br />
// кривовато :(<br />
//!! кривизна</p></blockquote>
<blockquote><p>// Все лентяям Лаборатории Касперского посвящается ;-)</p></blockquote>
<blockquote><p>// just for lazy Eugene</p></blockquote>
<blockquote><p>//когда-то написал этот камент, но что он означает уже не вспомню&#8230;</p></blockquote>
<blockquote><p>///&lt; Удаление прекращено командой (пользователя або еще каго)</p></blockquote>
<blockquote><p>// Ошибку расшифровать не удалось</p></blockquote>
<blockquote><p>//variant 1 &#8211; proxy-connection close<br />
//variant 2 proxy-connection keep-alive<br />
//variant 3 &#8211; proxy-connection mixed<br />
//variant 4 &#8211; непонятно, что это</p></blockquote>
<blockquote><p>// Должен быть вызван в любом случае, иначе падаем на Висте при запуске IE!</p></blockquote>
<blockquote><p>// 5.25&#8243;, 160KB,  512 bytes/sector<br />
// думаю, такого размера не найдешь в реале</p></blockquote>
<blockquote><p>// 25.01.96 ig (by Denis Petroff, 2:5030/287.14)</p></blockquote>
<blockquote><p>//      When Updater Updates the Updates storage</p></blockquote>
<blockquote><p>// BUG 16596 FIX: Если одновременно посылать команду из разных потоков с разными<br />
//   правами, то второй поток мог обломаться в CreateMutex с Access Denied<br />
//   и далее пакеты из SendCommand и SendData могли перемешаться!</p></blockquote>
<blockquote><p>//  ниже идет хак MFC, чтобы она не меняла фонт у CPropertySheet</p></blockquote>
<blockquote><p>// подменяем, чтобы зухучить подмену фонтов</p></blockquote>
<blockquote><p>/* locale должно выставлять приложение, а так мы<br />
можем испортить locale не известно кому, например SrciptChecker<br />
загрузится в чужой процесс и там накасячит. */</p></blockquote>
<blockquote><p>/*<br />
Установка перехвата сообщения WM_HELP.<br />
Объяснение :<br />
Сообщение WM_HELP приходит в окно, в котором щелкнули мышкой с вопросом, через SendMessage.<br />
Обработчик CWnd::OnHelpInfo (wincore.cpp) проверяет стиль окна и, если он не WS_CHILD,<br />
сам посылает сообшения о запуске Help в главное окно приложения. В противном случае<br />
сообщение поступает дальше по цепи родителей.<br />
Однако, если на OCX сделана &#8220;обертка&#8221;, то она встает первой в цепи subclass-окон<br />
и, естественно, первой получает возможность обработать это сообщение. Это правильно.<br />
При этом она спрашивает стили у своего COleControlSite. Это тоже правильно.<br />
Но COleControlSite обрезает все стили окна только до WS_BORDER | WS_TABSTOP и сохраняет<br />
в своей внутренней переменной. В дальнейшем он не позволяет изменить эту переменную<br />
и при запросе стилей отвечает ее значением. Это тоже правильно.<br />
Но вместе все получается неправильно. CWnd спрашивает стиль у COleControlSite, а у него<br />
не установлен WS_CHILD!<br />
Данный перехватчик взводит состояние VK_MENU, что не позволяет CWnd выполнять свою обработку<br />
(см. Wincore.cpp::CWnd::OnHelpInfo).<br />
*/</p></blockquote>
<blockquote><p>/* Извращение №1: имитация класса CMemFile при помощи С. */<br />
/* Извращение №2: имитация класса CPtrArray при помощи С. */</p></blockquote>
<blockquote><p>// crc32 оf compressed файла</p></blockquote>
<blockquote><p>/*<br />
Т.н. &#8220;библиотека&#8221; glibc не устает нас радовать своими<br />
заморочками. В ч. про функцию gmtime написано буквально<br />
следующее: &#8220;The gmtime() function need not be reentrant. A<br />
function that is not required to be reentrant is not required<br />
to be thread-safe. &#8220;.<br />
Вобщем, для переносимости следует использовать функцию<br />
KLSTD_gmtime.<br />
*/</p></blockquote>
<blockquote><p>// на  Vista запись все-таки не поддерживается, так что даже пытаться не будем&#8230;</p></blockquote>
<blockquote><p>// по идее, признак в каких случаях нужно серелизовать полянки должен быть в описателе структруры.<br />
// иторически сложилось так, что эта инфа захардкожена в фкнкции KLParams::IsFieldSerializable<br />
// Эта конвертация сделана по ошибке, на самом деле надо конвертировать<br />
// поле &#8220;TASK_NAME&#8221;, которое от сюда скорее всего вообще не видно.<br />
// Но поле TASK_NAME уже поздняк менять, т.к. вышел релиз, где в нём<br />
// передаётся &#8220;updater&#8221;. Если теперь поменять на нужный &#8220;KLUPD_TA_UPDATE_TASK&#8221;<br />
// то возникнут проблемы с обратной совместимостью (например, при создании в новом<br />
// плагине задачи обновления с типом KLUPD_TA_UPDATE_TASK, старый WKS её не поймёт<br />
// или другой пример см. багу 18345, там как раз плагин создал задачу KLUPD_TA_UPDATE_TASK).<br />
// Что касается этой ошибочной конвертации, то её убирать нельзя, т.к. при создани,<br />
// например, политики здесь &#8220;updater&#8221; поменялся на &#8220;KLUPD_TA_UPDATE_TASK&#8221;<br />
// и если конвертацию убрать, то политика будет применяться к профилю KLUPD_TA_UPDATE_TASK<br />
// которого у нас нет.</p></blockquote>
<blockquote><p>// Сейчас мы сделаем фокус:<br />
// Мы однократно откроем все доступные хранилища, чтобы их папки стали доступны сессии МАПИ</p></blockquote>
<blockquote><p>// здесь нельзя ставить трассировку &#8211; упадем</p></blockquote>
<blockquote><p>// 1. Посылаем &#8220;Спасибо&#8221;<br />
// 2. Вынимаем все сообщения этого пользователя из папки &#8220;Спам&#8221;</p></blockquote>
<blockquote><p>//TODO: Тут надо освободить все ресурсы, кроме this (ну не бред ли? Я это сделаю в деструкторе)</p></blockquote>
<blockquote><p>// на Vista изменили размер SOCKADDR_STORAGE. теперь 128 байт.<br />
// на всякий случай делаю 256 ( вдруг еще раз изменят !? )</p></blockquote>
<blockquote><p>//////////////////////////////////////////////////////////////////////////<br />
//<br />
// Остановка по требованию<br />
//////////////////////////////////////////////////////////////////////////</p></blockquote>
<blockquote><p>// Мы законнектились на сервер. А KAVCONN_ID не пришел. ( драйвер должен это делать моментально )</p></blockquote>
<blockquote><p>// Таки нашелся дин клиент, который рвет транзакцию в случае, если ему ответят &#8220;-ERR&#8221;. Это Outlook2003 ((<br />
// Придется всем отвечать &#8220;+OK\r\n&#8221;</p></blockquote>
<blockquote><p>// Запускаем поток фигни в сторону клиента (имитируем перекачку письма)</p></blockquote>
<blockquote><p>//Если вдруг когда-то баги будут закрыты, необходимо доработать тесты</p></blockquote>
<blockquote><p>//! не будем копить ответы неизвестного размера,<br />
//! только память без толку расходовать</p></blockquote>
<blockquote><p>// Сделаем финт ушами, чтобы не вытряхивалась inetcomm.dll</p></blockquote>
<blockquote><p>// ещё не время</p></blockquote>
<blockquote><p>// bf 19842: Калгин: не парим юзера ерундой, если проблемы с ключом</p></blockquote>
<blockquote><p>/* Нефига не работает, где-то после upgrade эти настройки перебиваются.</p></blockquote>
<blockquote><p>// Пользоваться только при крайней необходимости!</p></blockquote>
<blockquote><p>// Вот так уж исторически получилось, что этот класс нужен&#8230;</p></blockquote>
<blockquote><p>//- какая-то хрень для Fs от MS</p></blockquote>
<blockquote><p>// нет ни member&#8217;a ни функций</p></blockquote>
<blockquote><p>// Завтра в этом месте должна быть решена проблема расширения классов сообщений!!!</p></blockquote>
<blockquote><p>// вообще сюда попадать не должны, так что ради простоты забьём на потокобезопасность</p></blockquote>
<blockquote><p>// javaw.exe can have very large command-lines!</p></blockquote>
<blockquote><p>// Obsolete и сейчас совершенно не модно&#8230; и даже более того, реализация убрана. Пользуйтесь IOCTLHOOK_DiskIO</p></blockquote>
<blockquote><p>// с этой кучей надо что-то делать :(</p></blockquote>
<blockquote><p>/*<br />
*       Философия :<br />
*<br />
*   В данной модели драйвера загружаются не операционной системой ( IoManager ), нашим загрузчиком.<br />
*   Возникают попросы создания объектов, использующих DRIVER_OBJECT. Понятно, что при создании DeviceObject<br />
*   Необходимо использовать DriverObject загрузчика ( поскольку только он зарегистрирован в системе. )<br />
*   С другой стороны перебивать Dispatch &#8211; функции DRIVER_OBJECT загрузчика &#8211; есть вещь неправильная.<br />
*   Для того чтобы все было хорошо, создаем собственный DRIVER_OBJECT с особый типом.<br />
*   В загружаемый модуль передаем этот DRIVER_OBJECT. В нем необходимо будет сделать проверку :<br />
*   Если тип DRIVER_OBJECT новый, то по смещению sizeof ( DRIVER_OBJECT ) + sizeof ( DRIVER_EXTENSION ) лежит NT_CONTEXT,<br />
*   содержащий указатель на DRIVER_OBJECT драйвера загрузчика. И DeviceObject нужно создавать через него.<br />
*   Если же тип обычный, то DeviceObject нужно создавать &#8220;обычным&#8221; способом.<br />
*/</p></blockquote>
<blockquote><p>// Это хрень, которая проверяет : если мы терминируемся, то выгрузим все нафик.<br />
// Ибо нефик !</p></blockquote>
<blockquote><p>// какая-то лажо выполняет unbind &#8230; возможно это hibernater or something &#8230;<br />
// в-общем адаптер придется закрыть &#8230; а потом открыть, когда будет BindAdapter &#8230;</p></blockquote>
<blockquote><p>// Too much, hopeless :(</p></blockquote>
<blockquote><p>//! \return                     : TRUE &#8211; совпадает / FALSE &#8211; не совпадает :)</p></blockquote>
<blockquote><p>// вредно это</p></blockquote>
<blockquote><p>// BUG FIX: Проблема с криптопровайдером от Инфотекса:<br />
// Кажется нам удалось локализовать проблему, но пока не понятно, как ее решить.<br />
// У вас вызывается функция CryptAcquireContext( &amp;hProv, NULL, NULL, 1, CRYPT_VERIFYCONTEXT).<br />
// Поскольку явно имя желаемого провайдера не указано, то мы на самом деле открываем 2 (свой<br />
// и RSA). Это необходимо для обеспечения проверки ГОСТовских сертификатов. Обычно таким<br />
// образом открывают провайдер на проверку подписи и проблем не возникает.<br />
// Дальше все еще интереснее.<br />
// 1. Функция CryptGetUserKey естественно возвращает ошибку, но не NTE_NO_KEY, а NTE_NOT_FOUND.<br />
// Это наша ошибка, но если бы ее не было, то тогда функция CryptGenKey &#8220;подвесила&#8221; сервис,<br />
// т.к. у нас на генерацию ключа запускается окно интерактивного биологического ДСЧ.<br />
// 2. При коде ошибки, отличном от NTE_NO_KEY вы пытаетесь экспортировать открытый ключ,<br />
// вызывая CryptExportPublickKeyInfo. Эта функция &#8220;обламывается&#8221; и возвращает мусор. Код<br />
// ошибки у вас не анализируется и полученный неверный блоб идет на функцию кодирования<br />
// CertInfo. Asn кодировщик неправильно определяет размер данных (те самые 500М) и дальше<br />
// эта выделенная память нигде не освобождается.<br />
//<br />
// Мое предложение:<br />
// Проще всего исправить у вас. Достаточно явно указать имя криптопровайдера, добавив<br />
// 1 строчку кода:<br />
// CryptGetDefaultProvider( &#8230; 1, &#8230;, szProviderName )<br />
// CryptAcquireContext( &amp;hProv, NULL, szProviderName , 1, CRYPT_VERIFYCONTEXT).<br />
// В этом случае мы не будем вмешиваться в работу функции и ошибка пропадет.<br />
// С нашей стороны наверное тоже можно поправить, но это существенно сложнее, так как<br />
// повлияет на работу других приложений, осуществляющих проверку подписи как для ГОСТ<br />
// так и для RSA сертификатов.</p></blockquote>
<p>upd: Касперский в своём блоге прокомментировал происхождение исходников:</p>
<blockquote><p><em>Ааа&#8230; Вы про это&#8230; Неудавшийся тестер (испытательный срок не прошел). К  рукам прилипли какие-то кусочки исходников. Три года условно. Другим  повторять его опыт &#8211; не рекомендую.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/01/28/kaspersky-source-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Я сделаю свой SNMP!</title>
		<link>http://www.egorka.org/2011/01/25/my-very-own-snmp/</link>
		<comments>http://www.egorka.org/2011/01/25/my-very-own-snmp/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 22:47:26 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[разное]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1039</guid>
		<description><![CDATA[Из-за неожиданно возникнувших сложностей при смене насоса кондиционера, потребовался его удаленный мониторинг, хотя бы на первое время. Пришлось импровизировать: Листочек бумаги избавляет от бликов. И последний штрих &#8211; защита от дураков, любящих спасать легкие планеты, выключая всюду свет.]]></description>
			<content:encoded><![CDATA[<p>Из-за неожиданно возникнувших сложностей при смене насоса кондиционера, потребовался его удаленный мониторинг, хотя бы на первое время. Пришлось импровизировать:</p>
<p><img class="alignnone size-full wp-image-1040" title="Picture 002" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/01/Picture-002.jpg" alt="" width="800" height="600" /></p>
<p><img class="alignnone size-full wp-image-1041" title="Picture 003" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/01/Picture-003.jpg" alt="" width="800" height="600" /></p>
<p>Листочек бумаги избавляет от бликов. И последний штрих &#8211; защита от дураков, любящих спасать легкие планеты, выключая всюду свет.</p>
<p><img class="alignnone size-full wp-image-1042" title="Picture 004" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/01/Picture-004.jpg" alt="" width="800" height="600" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/01/25/my-very-own-snmp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Прогресс налицо</title>
		<link>http://www.egorka.org/2011/01/13/progress/</link>
		<comments>http://www.egorka.org/2011/01/13/progress/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 19:39:58 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[интерфейс]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1032</guid>
		<description><![CDATA[Сверху &#8211; эппловский прогресс-бар, осталось около двух часов, скачано 838 метров, есть возможность приостановить скачивание. Снизу &#8211; микрософтовский прогресс-бар, сколько осталось никто не знает, сколько уже скачано &#8211; тем более, есть возможность только отменить всё нахер.]]></description>
			<content:encoded><![CDATA[<p>Сверху &#8211; эппловский прогресс-бар, осталось около двух часов, скачано 838 метров, есть возможность приостановить скачивание.</p>
<p>Снизу &#8211; микрософтовский прогресс-бар, сколько осталось никто не знает, сколько уже скачано &#8211; тем более, есть возможность только отменить всё нахер.</p>
<p><img class="alignnone size-full wp-image-1033" title="progressbars" src="http://www.egorka.org/wordpress/wp-content/uploads/2011/01/progressbars.png" alt="" width="542" height="311" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/01/13/progress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Обожаю</title>
		<link>http://www.egorka.org/2011/01/10/lovehate/</link>
		<comments>http://www.egorka.org/2011/01/10/lovehate/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 23:01:42 +0000</pubDate>
		<dc:creator>Egor</dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[blackberry]]></category>

		<guid isPermaLink="false">http://www.egorka.org/?p=1029</guid>
		<description><![CDATA[(SDR 213683) In BlackBerry Enterprise Server 4.1 SP6, if a user sends a rich-text email from Lotus Notes to a recipient who uses Microsoft Outlook, and the message contains the phone character (Arial Unicode MS font), when the recipient replies to the message from the BlackBerry device, the body of the message is replaced with [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>(SDR 213683) In BlackBerry Enterprise Server 4.1 SP6, if a user sends a rich-text email from Lotus Notes to a recipient who uses Microsoft Outlook, and the message contains the phone character (Arial Unicode MS font), when the recipient replies to the message from the BlackBerry device, the body of the message is replaced with random characters.</em></p></blockquote>
<p>Ну не прелестно ли&#8230; :-/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.egorka.org/2011/01/10/lovehate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

