1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Виртуализация для самых маленьких #3: готовим структуры, заполняем EPT

21 июн 2020

В прошлой части мы получили теоретическую базу по принципам настройки гипервизора и EPT. Применим их на практике. В первой части мы написали шаблон драйвера и заготовку для виртуализации всех процессоров - функцию VirtualizeAllProcessors. Код виртуализации будет необходимо выполнить на всех процессорах и это легко сделать через генерацию межпроцессорного прерывания функцией KeIpiGenericCall. Каждый логический процессор выполнит код, переводящий его в режим виртуализации, и продолжит свою...
Читать далее
Лайков +3 Комментариев1 Просмотров114

Виртуализация для самых маленьких #2: управляющие структуры, EPT, MTRR

18 июн 2020

Продолжаем писать изучать гипервизор. В прошлой части мы написали шаблон драйвера и заготовку функции для виртуализации всех логических процессоров. Прежде всего, следует напомнить, что под логическим процессором понимается или одно физическое ядро процессора (если процессор не поддерживает SMT/Hyper-Threading), или один логический поток в процессорах с поддержкой SMT/Hyper-Threading. Иными словами, если у процессора 4 ядра и он поддерживает Hyper-Threading (два потока на одно физическое...
Читать далее
Лайков +3 Комментариев5 Просмотров172

Мета-программирование Nim и обфускация

20 июн 2020

Здравствуйте, друзья, мы с вами продолжаем исследовать возможности мета-программирования различных высокоуровневых языков в одной единственной прикладной сфере - обфускации. На этот раз мы рассмотрим язык программирования Nim - модный, молодежный, немного питонный, немного паскальный язык, который позиционируется как альтернатива C++. Насколько дизайн и реализация языка Nim удачны - вопрос спорный, но нас как бы это не особо то и интересует. Нас интересуют только весьма богатые возможности...
Читать далее
Лайков +3 Комментариев1 Просмотров205

Мета-программирование С++ и обфускация

13 июн 2020

Здравствуйте, друзья, это - моя первая статья на Wasm'е, не судите строго. Надеюсь она же станет первой статьей в цикле, в котором я рассмотрю возможности мета-программирования разных ЯП и компиляторов применительно к обфускации кода. Первым пациентом у нас будет великий и могучий, ненавидимый многими программистами по всему миру, прородитель buffer overflow и use after free багов - добрый дядька С++. Когда то очень давно, а именно в 2013 году, когда в компиляторы С++ начали завозить...
Читать далее
Лайков +4 Комментариев6 Просмотров219

Виртуализация для самых маленьких #1: гипервизор - что, зачем и почему

15 июн 2020

[ATTACH] Развитие технологий аппаратной виртуализации (Intel VT-x и AMD-V) открывает широкие возможности по контролю выполнения кода на самом низком уровне. Привычные всем гипервизоры (Hyper-V, KVM, VMware или VirtualBox) позволяют запускать операционные системы в изолированном окружении: это становится возможным, благодаря способности процессоров работать в специальном режиме, в котором они контролируют доступ к ресурсам и обрабатывают выполнение заданных инструкций и событий. При...
Читать далее
Лайков +12 Комментариев17 Просмотров327

Для тех кто на диване и лень читать Intel маны (обход проактивок. часть 1)

19 фев 2018

Здесь пойдет речь об обходе каспера. Кому надо редактируйте, имхо это набросок, но рабочий, я не силен в писанине статей, люблю, жесткий кодес, и всё. И так приступим к проактиву каспера.... Вот так определяем его песочницу, ака типа эмулятор Сначала смотрим CPUID поддержку - в дальнейшем надо будет. int isCPUIDsupported (void) { // returns 1 if CPUID instruction supported on this processor, zero otherwise // This isn't necessary on 64 bit processors because all 64 bit Intel...
Читать далее
Лайков +2 Комментариев0 Просмотров1.261

Прикладной SIMD 003: прежде, чем начать (часть 2)

13 мар 2018

Инициализация DSP-модуля После того, как мы смогли корректно идентифицировать необходимые нам расширения процессора, возникает необходимость в инициализации всего DSP-модуля. Частично мы уже выполнили большую часть работы, написав код идентификации и поиска поддерживаемых расширений процессора. Теперь осталось открыть завесу над тайной, зачем всё это нам нужно. Давайте представим себе ситуацию, когда нам необходимо выполнить какую-то функцию, осуществляющую достаточно нетривиальные и...
Читать далее
Лайков +1 Комментариев0 Просмотров1.467

Прикладной SIMD 003: прежде, чем начать (часть 1)

12 мар 2018

Предисловие В этой статье мы рассмотрим необходимый минимум действий для того, чтобы подготовить почву для работы с SIMD. Для этого необходимо выполнить ряд действий: удобно организовать проект; написать функцию идентификации процессора и поиска расширенных наборов инструкций; реализовать механизм инициализации всего DSP-модуля; написать функции инициализации и восстановления машинного контекста; собрать всё воедино с нужными опциями. Организация проекта Для того, чтобы впоследствии...
Читать далее
Лайков +1 Комментариев0 Просмотров1.409