Категория: Разработка ПО

Как разрешить регистры MSR в Virtual Box

MSR ( model specific register ) — регистры процессора специфичные для данного типа процессора.

Virtual Box — программное обеспечение для виртуализации.

Virtual Box 4.0.4 и более ранние версии игнорируют большинство регистров MSR. Хотя мог бы разрешать доступ к регистрам хостовой системы. Однако, процессоров много и каждый имеет свой собственный набор регистров MSR и потому проще запретить все, что не относится к стандартному набору, так безопаснее.

Иногда  хочется запустить в виртуальной машине и отладить что-нибудь, что работает с MSR. При этом, например, известно какие регистры нужно использовать и насколько безопасно их использовать из виртуальной машины. Если бы нужно было бы использовать VMWare, то с мыслю этой пришлось бы попрощаться( если конечно не мил подход реверсить-патчить-реверсить-патчить). Но, к счастью, Virtual Box предоставляется с исходниками. Правда только Virtual Box OSE. Не беда, будем использовать его. А именно две версии: 3.2.8 ( стандартный для Ununtu 10.10 ) и 4.0.4 ( последняя версия на момент написание текста ).

Продолжение чтения »

Создание потока из метода класса

Уже несколько раз приходилось сталкиваться с проблемой невозможности запустить поток из функции, которая является методом класса. Компилятор упрямо возвращает ошибку подобную, приведенной ниже:

error C2664: ‘CreateThread’ : cannot convert parameter 3 from ‘unsigned long (__thiscall CMyClass::*)(void *)’ to ‘unsigned long (__stdcall *)(void *)’

И его понять можно.  Функции требуется адрес статической функции. А, запуская поток с метода класса, в большинстве случаев есть желание, чтобы функция работала как полноценный метод экземпляра класса. Решить проблему помогает «финт ушами» описаный здесь. Некоторые советуют использовать для этого boost. Не считаю, что такая мелочь повод для подключения дополнительной библиотеки.

Какой-то умник добавил исходники решения проблемы на говнокод.ру.  Он определенно просто не в теме.

Doxygen помогает создавать документацию из комментариев, но кто поможет написать комментарии?

Не исчерпывающий, но довольно развернутый ответ на этот вопрос дает страница «средства» проекта doxygen. Из всего, что там представлено слюновыделение вызывает только один проект. Называется он Atomineer. Все, что он умеет описано на странице проекта. Расскажу коротко: программист пишет код — плагин пишет комментарии для Doxygen. Очень удобно для рутинных действия, таких, как описание параметров функций или возвращаемых значений. Разработчики так же уверяют, что автосгенерированные комментарии будут обновляться вместе с обновлением кода. Так же, если писать код в стиле «самодокументирования», то вручную документировать практически ничего не прийдется.

Хорошо ли это работает? Еще не пробовал, но обязательно попробую. Стоит плагин $10, и если он решит проблему с документированием, то это не много.

Fuzzing, фаззинг, in-memory fuzzing, фаззинг в памяти, vulnerability, уязвимсоти, binary code, бинарный код, static analysis, статический анализ, dynamic analysis, динамический анализ, fault injection, внедрение ошибок, CTF, information security, информационная безопасность, unit testing, тестирование