Not a kernel guy

… in the Windows kernel team

Saturday, June 21, 2008

Почему GetModuleFileName возвращает “system32” для 32-х битных библиотек под Wow64?

Вопрос:

32-х битный процесс запущен на 64-х битной системе. Почему для некоторых библиотек GetModuleFileName возвращает путь вида “%SystemRoot%\syswow64”, а для других - “%SystemRoot%\system32”, не смотря на то, что и первые, и вторые находятся в “%SystemRoot%\syswow64”?

Ответ:

Потому что загрузчик понятия не имеет о Wow64 и перенаправлении файловой системы в частности. Загрузчик просто сохраняет полное имя модуля во время загрузки и возвращает его копию в GetModuleFileName. Соответственно если библиотека была загружена как “%SystemRoot%\system32\foobar.dll”, то и GetModuleFileName вернёт эту строку.

Это же верно и для других Win32 функций.

Posted at 2:39 pm •

Sunday, June 15, 2008

Ценителям логичности и простоты cmd.exe посвящается…

Хорошая статья: Особенности реализации командного процессора cmd.exe операционных систем WinNT. Напрочь отбивает всякое желание связываться с написанием скриптов для cmd.exe. :-)

Posted at 4:26 pm •

Tuesday, May 20, 2008

Малышку верните!

На днях у одной из тестовых машин, занимающих жизненное пространство у меня в офисе, обнаружились проблемы с перегревом. Вернее сказать не у неё, а у машин из той же самой партии компьютеров. Под это дело организовали установку дополнительных кулеров на все подобные машины и, что б два раза не вставать, - обновление BIOS. Я, надо сказать, никаких проблем с перегревом не замечал, но мало ли. Ставят – чего ж отказываться.

(more…)

Posted at 9:43 pm •

Friday, May 16, 2008

Они наступают!

Вот примерно так выглядит мой офис на сегодняшний день (снималось телефоном, качество – соответствующее):

My office

Их там десять штук, если считать тот, что попал в кадр только частично.

Posted at 8:29 pm •

Friday, May 9, 2008

«Большие» функции в коде.

Вопрос из комментариев:

Не могли бы прокомментировать ответ “Lepsik” по порядкам в Microsoft (тред):

автор - Диез

1, 2. Естественно, полтора - это величина условная. Просто большая длина обычно требует более одного движения для полного обзора :)

3. Никто не мешает сделать методы того же класса, но часто удобнее и логичнее разнести код на уровни, т.е. в отдельные классы (а то и в отдельные библиотеки).

Вообще, все это есть у Фаулера :)

это просто у вас программы маленькие. :)

в больших компаниях Microsoft/IBM/SONY, …. таких правил нет. У нас есть методы с телом в сотню экранов. А файл с методом тела процесса больше мегобайта.

За весь Microsoft не скажу. Расскажу, что видел сам.

(more…)

Posted at 9:58 pm •

Tuesday, May 6, 2008

Долгое молчание.

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

В общем и целом всё это отнимает всё свободное время, и на блог практически ничего не остается. Надеюсь, что через некоторое время ситуация исправиться.

Posted at 10:42 pm •

Tuesday, April 15, 2008

Анализ одной уязвимости в Flash.

Томас Пташек (Thomas Ptacek) анализирует нечеловеческий эксплоит Марка Доуда (Mark Dowd), использующий уязвимость в Flash.

Эксплоит использует целочисленное переполнение, возникающее из-за того, что Flash runtime использует знаковое число, прочитанное из SWF файла, как беззнаковый размер выделяемого блока памяти. В итоге Flash пытается выделить несколько гигабайт памяти, получает в ответ NULL, но не проверяет его, а пишет 32-х разрядное число по смещению от полученного нулевого указателя. Марк вычислил, что если смещение X превышает 0×80000000 и при этом X+4 делится без остатка на 12, то результирующий адрес получается валидным. Записываемое 32-х битное значение получается из исходного 16-ти разрядного числа вычитанием значения еще одной переменной. Иными словами, ни указатель, ни записываемое значение не контролируются хакером полностью.

Тем не менее…

(more…)

Posted at 10:08 pm •
« Previous PageNext Page »

Powered by WordPress