Welcome to TechNet Blogs Sign in | Join | Help

Browse by Tags

All Tags » Программирование   (RSS)

Даже и не думайте пользоваться функцией Wow64DisableWow64FsRedirection!

Просто удивительно, насколько опасной может быть функция Wow64DisableWow64FsRedirection . Эта функция позволяет временно отключить перенаправление файловой системы в Wow64. Еще более удивительно, что лишь малая доля разработчиков соглашается менять свой

Open source как социальный эксперимент.

Никогда не знаешь к чему приведет отправка патча в какой-нибудь open source проект. Обычно это выглядит так. Программа вас чем-то не устраивает и вы изменяете её под себя. Потом, сообразив, что это будет полезно кому-нибудь еще, вы оформляете красивый

Ещё одна причина, почему не следует разбазаривать свободное место в стеке.

В Microsoft, по крайней мере, в той его части, что разрабатывает Windows, весьма неплохо поставлен процесс отладки падений, сбоев и прочих багов . Автоматические тесты при падении вываливаются в отладчик. Если какая либо проблема воспроизводится локально,

Зачем нужен параметр lpClass в функции RegCreateKeyEx?

Любой разработчик, кто хоть раз создавал ключ в реестре с помощью функции RegCreateKeyEx задавался вопросом: «а зачем нужен параметр lpClass и что он означает?» lpClass [in, optional] The user-defined class type of this key. This parameter may

Иногда люди воспринимают вещи слишком буквально.

На днях свалился в inbox вопрос: The documentation for QueueUserApc states "an APC cannot be queued from a 64-bit process to a 32-bit process or vice versa." However on Vista Ultimate x64, we can queue a user APC from a 32-bit process to a 64-bit

Как работает «раскрутчик» стека в x64.

В комментариях к предыдущем посте про исключения верно заметили, что exception chain в TEB используется только в x86 коде. И x64, и ia64 exception chain не используют вообще. Как же, в таком случае, выполняется «раскрутка» стека при обработке

Undefined instruction.

Набор команд x86-совместимых процессоров за годы эволюции набрал немалое количество всякой экзотики. Один из примеров такой экзотики – инструкция UD2. Задача этой инструкции состоит в том, чтобы… быть несуществующей инструкцией. Выполнение

Унификация стиля кодирования в команде - тупичок с граблями.

Тема жёванная-пережёванная, так что я не буду подробно останавливаться на том, зачем нужен единый стиль кодирования в команде (или проекте). Основные тезисы: Унифицированный стиль кодирования упрощает сопровождение кода. Это, кажется, единственная причина,

Detours.

Сижу, разбираюсь как Detours перехватывает функции Win32 API. Сама идея известна. В начало функции пишется безусловный JMP на функцию перехватчик. Для того, чтобы вызвать оригинальную функции, её код, на место которого помещается JMP, копируется в буфер

diStorm64 disassembler.

Наткнулся на хороший open source disassembler, понимающий и 80x86 и amd64, и распространяемый под BSD лицензией: diStorm64 . diStorm is a binary stream disassembler. It's capable of disassembling 80x86 instructions in 64 bits (AMD64, X86-64) and both

Проверка параметров функции.

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

Undefined behavior – это все, что явно не указано в документации.

Навеяно постом про ExUuidCreate и в частности вот этой фразой: Well, I suggest MSFT to documented this behavior, or at least explain this case in documentation. Вкратце, суть статьи сводится к тому, что функция ExUuidCreate может изменять содержимое возвращаемого

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

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

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

Вопрос из комментариев : Не могли бы прокомментировать ответ “Lepsik” по порядкам в Microsoft ( тред ): автор - Диез 1, 2. Естественно, полтора - это величина условная. Просто большая длина обычно требует более одного движения для полного

Отгадка.

В комментариях к загадке ответ был дан почти сразу. Действительно, обработчик отложенной загрузки DLL попытается загрузить «version.dll» по имени, а не по полному пути. В результате загрузчик будет искать библиотеку, пользуясь правилами по умолчанию
More Posts Next page »
 
Page view tracker