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

Оффтоп из темы Kernel-Bridge Framework

Тема в разделе "WASM.HEAP", создана пользователем M0rg0t, 8 ноя 2020.

Статус темы:
Закрыта.
  1. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    HoShiMin, это не нужно, лучше смотреть в сторону снятие аверских хуков. Давно хочу закодить антируткит (как рку, гмер), правда мало знаний по ринг0. Вот это дело, так как тулз нет (кроме гмера и какой-то китайской байды).
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.937
    А много их (именно хуков) в ядре вообще сейчас? Вон на дамаге в моей статье исследовали у многих аверов перехваты на уровне пользователя (а это сами понимаете).
     
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    Rel, не знаю, мой уровень знаний не позволяет это исследовать; знаю, что есть такие аверы, и те, что на букву С, и китайское говно разное. И там такие хуки, что авера хрен удалишь. Это парадоксальная тенденция - еще 5 лет назад никто не мог подумать, что будет такой софт, что нельзя удалить с компа. Но аверы есть. Я тут создавал тему про неудаляемые приложения (руткит тоже может такой быть), но тогда минздравы засрали ее. А так интересно все это понять, как такое поставить, как снять , как с этим бороться (если завтра руткит захватит машину, как вот его авер вычистит?).
    А за ту статью я голосовал, годно, особенно в контексте СОМ.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.937
    Скриптовый движок, который будет позволять читать произвольные байты ядерной памяти.
     
    Последнее редактирование модератором: 11 ноя 2020
  5. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    Ну зато там Си , а мне безопасность не надо, я же не ынтерпрайз пишу.
    Ок, понял, если так, то хорошо.
    )) не хочу начинать холивар, но зачем плюсы? Вот Иосифович в своей книге по ринг0 тоже плюсы туда засунул.. В чем смысл? Код на Си прост, понятен, и лаконичен. Плюсы это жуть.
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.937
    Ну если помнить, что вы тут все - жуткие оопфобы, как минимум более строгая статическая типизация и RAII.
     
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    в случае винапи разработки - это бесконечное приведение типов, так что тут скорее минус, чем плюс.
    RAII да, хорошая вещь.
     
  8. HoShiMin

    HoShiMin Active Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    914
    Адрес:
    Россия, Нижний Новгород
    А в чём именно жуть?

    Если приходится постоянно приводить типы - с кодом что-то не так.

    Если тебе непонятен или не нравится какой-то аспект плюсов - никто не заставляет его использовать.
    Например, новичков в плюсах часто пугают шаблоны - но без них можно обойтись и писать как раньше.

    Кроме того, плюсы существенно упрощают логику кода, сокращают его количество и повышают безопасность.
    И всё это бесплатно: ты не платишь производительностью, наоборот - повышаешь её при правильном использовании всех возможностей.

    Что именно тебе не нравится в плюсах?
     
  9. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    в винапи это постоянно нужно, сейчас лень искать примеры, но там вечно это LPBYTE(HeapAlloc), приведение структур OSVERSIONEX, STARTUPINFOEX и прочие . Из-за этого код выглядит уродливо. Если Си дает варнинг, то плюсы, ес-но, еррор.

    ООП. Терпеть его не могу нигде и ни в каком виде.
    Про современные плюсы вообще молчу. Я не знаю, зачем этот язык вообще делают. Умные указатели, лямбды и прочий бред.. Язык все равно не будет такой безопасный, как шарп или джава, но зато ушел от своих Сишных корней.
    Почитайте предисловие к этой книге http://www.stolyarov.info/books/pdf/cppintro5.pdf , тут автор очень хорошо объясняет недостатки стандартов после 98 года (или когда там вышел STL). Причем автор не хрен с горы, как я, а программист, преподаватель, издал хорошие книги.
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    3.937
    Ну как зачем? Язык развивается в угоду современным практикам программирования. Канеш дизайн языка в плюсах такой себе изначально, как и в сишечке. Но, например, я сейчас по воли судьбы делаю веб-сервис на Котлине (тк на jvm есть одна отличная библиотека, которой нет больше нигде, а джаву я ненавижу всеми фибрами души), так вот в некоторых моментах разработки я (как программист) испытываю эстетическое удовольствие от того, как красиво и лаконично выглядит код моей команды, совмещающий в себе лучшие черты из ооп (классы, реализующие единые интерфейсы) и функционального программирования (иммьютабельные коллекции и работа с ними через функции высокого порядка (map, filter, reduce, forEach и тд)).
     
    q2e74 нравится это.
  11. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    704
    Имхо зря лямбды в бред записал.
     
  12. HoShiMin

    HoShiMin Active Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    914
    Адрес:
    Россия, Нижний Новгород
    Почему?
    Но даже там нет никакой конкретики.
    А в них что не нравится?
     
  13. X-Shar

    X-Shar Active Member

    Публикаций:
    0
    Регистрация:
    24 фев 2017
    Сообщения:
    296
    По описание кстати не плохой функционал, респект...

    Как время будет попробую потестить, а гипервизор бодрячком работает, VT-x ?

    Я как-то для линукса пробовал делать эмуляцию опкодов, ну типо подаются опкоды, а драйвер их исполняет в гипервизоре, но так и не добился стабильности, смотрел разные проекты, везде неработает нихрена, тут как с эти дело, пусть винда, хрен с этим...)
     
  14. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.211
    HoShiMin, это все бесполезный холивар, не хочу его тут продолжать. Тема по хорошему инструменту, полезному, собственно ответ на вопрос я получил (что клиента можно собрать в длл и юзать из Си).
    ООП и прочее для меня лишнее, я не работаю в какой-то конторе , для себя мне хватает процедур от и до. А лишнее время я лучше потрачу на изучение того же ядра, чем классов, интерфейсов и наследования.
     
  15. HoShiMin

    HoShiMin Active Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    914
    Адрес:
    Россия, Нижний Новгород
    На VT-x работает, на AMD-V что-то сломалось в последних релизах. Поправлю уже в кб2.
    --- Сообщение объединено, 9 ноя 2020 ---
    А что именно было нестабильно?
    Сама по себе задача простая: делаем опкоды на основе, например, ud2, ловим исключение, читаем инструкцию и делаем что нам нужно. Затем сдвигаем RIP - готово.
     
  16. X-Shar

    X-Shar Active Member

    Публикаций:
    0
    Регистрация:
    24 фев 2017
    Сообщения:
    296
    Краш с сегментейшн фоулт, в зависимости от проекта в разных местах...

    Пробовал и на кему и на реальном железе, на разных ядрах, непонятно что там.:dntknw:

    Вообще все началось, что на хабре увидел челлендж от ЛК:https://m.habr.com/ru/article/499746/

    Задание показалось мне очень простым, нужно было доработать "игрушечную песочницу", ну там простенький модуль ядра и юзермодное приложение, которое взаимодействует с ним, в юзермодном приложении вводятся опкоды, а в ядре происходит эмуляция через VTX и в передача результатов в юзермод.

    Но у меня сам проект на кему покрашился, на инструкции vxon.

    Попробовал на реальной системе и разных ядрах, тоже краши...

    Потом я подумал, а почему-бы не написать самому ?

    Начал-бы делать по мануалам, вот например неплохой:
    https://nixhacker.com/developing-hypervisior-from-scratch-part-1/

    В итоге даже готовый проект там в гите покрашился, хз. может процы у меня такие ?

    Виртуализацию поддерживает, вот хочу на винде попробовать, заработает нет ?

    Хотя какая разница, какая система, должно на любой работать-же.)
     
    GRAFik нравится это.
  17. HoShiMin

    HoShiMin Active Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    914
    Адрес:
    Россия, Нижний Новгород
    Пробежался по-диагонали.
    Весьма странный код.
    Базовая инициализация плюс-минус верная, но что происходит после vmlaunch?
    Процессор начинает выполнять cpuid со стеком, выделенным в потоке хоста.
    Выполнил - что дальше? Возвращаться ему некуда: в стеке рандомный мусор. Кроме того, виртуализован только один логический процессор, а у тебя их много. А если планировщик что-то назначит на виртуализованное ядро? А у него нет ни EPT, ни настроенных MTRR, т.е., памяти у нас не будет.
    В общем, этот пример и не должен работать.
     
    GRAFik нравится это.
  18. X-Shar

    X-Shar Active Member

    Публикаций:
    0
    Регистрация:
    24 фев 2017
    Сообщения:
    296
    Как понял cpuid нужно самому эмулировать, просто будет выход в монитор с ошибкой cpuid, где нужно по ошибке уже обработку сделать, как вариант...

    Но не важно, я разные проекты пробовал и не один не заработал в линуксе...

    Непонятно почему от Лаборатории Касперского не работает ?

    Вот я вытащил, переделал как модуль ядра, HoShiMin, если есть время/желание можешь глянуть, так на вскидку в чём может-быть проблема, кода там немного...
    Там для всех процев, настойки все сделаны вроде...

    Я его как модуль ядра сделал:

    Сборка:

    make clean
    make

    Установка:

    sudo insmod hypervisor_driver.ko

    Вывод отладочной информации драйвера:

    dmesg -c | tail -n60

    Эмуляция опкодов, через юзермод:

    ./sandctl 0xCC 0xCD 0x10 0xF4

    Если будете запускать на реальной системе, то может-быть краш, скорее-всего так и будет, так-что осторожно.)
    Я подозреваю, что у меня может проц. какой старый, либо компилятор оптимизирует что-то...

    Так-то там у ЛК пять заданий, их-бы легко можно сделать было, но т.к. сам проект не стартанул, я так немного подебажил и забил потом, видно не судьба.:dntknw:
     

    Вложения:

    • sand_f.zip
      Размер файла:
      7 КБ
      Просмотров:
      36
    Последнее редактирование: 10 ноя 2020
    GRAFik нравится это.
  19. GRAFik

    GRAFik Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    119
    Для винды было бы интересно глянуть. Причем, на каком-нибудь самом примитивном уровне, для того чтобы уловить суть. А там глядишь и появились бы у вас помошники-единомышленники для создания альтернативы самому великому визору, сами понимаете кого. ))
     
  20. X-Shar

    X-Shar Active Member

    Публикаций:
    0
    Регистрация:
    24 фев 2017
    Сообщения:
    296
    Для винды куча инфы, как на хабре, но лучше в енг сегменте, вот классный цикл статей:https://rayanfam.com/topics/hypervisor-from-scratch-part-1/

    Там с нуля прям, читайте/разбирайтесь, если это нужно...

    Для линукса в этой области мало инфы, но там думаю сама ОС неважна, принцип примерно один...

    Так-то тема очень узконаправлена и нужна только тем кто планирует работать, что-то делать с гипервизорами, иначе смысла это изучать и нет.)

    Я-то просто хотел попробовать сделать задания Челленджа, было-бы интересно поучаствовать в разработке KOS, т.к. это немного похоже на то-что я сейчас делаю на своей основной работе, но видно не судьба...)
     
Статус темы:
Закрыта.