Задать вопрос
  • С чего начать чтобы написать полностью свой гипервизор с 0?

    TrueBers
    @TrueBers
    Гуглю за еду
    Сначала нужно понять, какая архитектура процессора интересует.
    Для Intel, AMD, ARM, RISK-V будут разные технологии использоваться.
    Допустим у тебя Интел. Качаешь Intel Software Developer Manual. Это такой талмуд на 5 тысяч страниц. Там можно найти всю информацию по инструкциям процессора, настройкам, режимам, прерываниям, разметке памяти и т. п.

    Дальше, необходимо решить, какой тип гипервизора нужен.
    Есть грубо 2 вида: первый и второй.
    Первый это когда гипервизор является программой, которая не рассчитывает ни на кого, кроме как на само железо.
    И второй, который пользуется средствами запущенной ОС. Просит у неё память, использует её планировщик, её модель памяти, прерывания, и т.д.
    В первом случае гипервизор может являться, например, драйвером для UEFI или голого железа.
    Во втором случае -- драйвером ОС, который загружает сама операционная система.

    В ответе с примерами про VirtualBox и xen видно, что автор ответа никогда не сталкивался с разработкой гипервизоров, но решил ответить ради ответа и кучи мусорных совковых слов из ГОСТов. Изучать гипервизоры на их примере, всё равно что ковыряться в коде ядра Линукса, чтобы понять как работают ОС. Пары-тройки лет должно хватить.

    Проще всего взять один из сотен готовых учебных микро-гипервизоров и ковырять их, пописывая свой параллельно, по мере того, как приходит понимание.
    Советую начать с разработки bare-metal гипервизора на основе UEFI-драйвера. Там минимальные функции уже идут в прошивке из коробки, такие как выделение памяти, настройка реального режима процессора, страничной адресации, и т. п. Остаётся только написать сам код гипервизора и можно будет загружать существующую установленную ОС прямо в своём гипервизоре.

    Ассемблер нужен по минимуму. Там строк 50 от силы на нём наберётся. Его нужно читать, понимать, да. Знать тонкости работы процессора, интерпретировать состояние регистров правильно и ещё много чего. Но писать на нём не нужно почти ничего.

    Погугли. Миллион же уже курсов, статей, репозиториев.
    Один из первых был Hypervisor-From-Scratch, он до сих пор поддерживается.
    7 days to virtualization тоже один из первых курсов статей.
    SimpleVisor один из первых репозиториев открытых с минимальным гипервизором в качестве драйвера под винду которая виртуализирует сама себя.
    Orange Slice неплохой минималистичный гипервизор, автор его разрабатывал на стриме на твитче или ютубе, не помню уже.
    Из awesome списков есть https://github.com/husseinmuhaisen/Hypervisor и https://github.com/Wenzel/awesome-virtualization
    Инфы просто тонны на эту тему в последнее время. На гитхабе игрушечных гипервизоров несколько десятков если не сотен.
    Ответ написан
    2 комментария
  • Судебная экспертиза unity C#?

    TrueBers
    @TrueBers
    Гуглю за еду
    Сколько ж курс стоил, что такие заморочки?
    На сайте нетологии есть курс за 107к за 13 месяцев. Это 8к в месяц.
    Это он?
    Работу бы лучше с таким рвением искал. Там научишься, да ещё и платить будут. 8к в месяц это заплатить за ChatGPT, GH Copilot, Midjourney, пару лицензий софта и сидеть учиться, искать возможность, а не причину.

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

    По Юнити ГРОМАДНОЕ количество информации в интернете. Разжёвано просто всё, что можно и нельзя. Какие нужны курсы? Садись да пиши или работу ищи. Судиться с инфоцыганами на их поле по их правилам -- это прям смешно.
    Ответ написан
    Комментировать
  • Какой режим заряда работает для ноутбука?

    TrueBers
    @TrueBers
    Гуглю за еду
    Это всё профили передачи мощности стандарта USB.

    Они все требуются для реализации стандарта, это не разные стандарты, как тут писали, и не "универсальная" зарядка. Это блок питания с поддержкой USB Power Delivery, ничего другого в этих секретных цифрах не кроется.

    Эти токи выбирают устройства обычно в момент согласования вначале зарядки. Но так же БП, заметив, например, перегрев, может попросить устройство снизить потребление, чтобы охладиться.
    Либо это может быть щадящая зарядка низкими токами, чтобы не стрессовала батарея, когда, например, на ночь ставится устройство заряжаться, оно предполагает, что им пользоваться не будут и запрашивает минимальный ток, чтобы максимально продлить жизнь батарее.
    Другой вариант: видеокарта стартует и требует мощности у БП, чтобы передать больше мощности, БП переходит на повышенное напряжение. Соответственно, когда устройство находится в Idle, нужны минимальная мощность.
    Ответ написан
    Комментировать
  • Как транслировать .class в .dex?

    TrueBers
    @TrueBers
    Гуглю за еду
    Например, погуглить (это пока легально): android class to dex compiler.
    Первой же строкой в поиске зайти по ссылке.
    Profit!
    Ответ написан
    4 комментария
  • Как WI-FI роутеры противодействуют атакам типа BrutForce или Dictionary Attack?

    TrueBers
    @TrueBers
    Гуглю за еду
    1. Брутфорс пароля не имеет смысла. Это слишком долго и затратно. Перебор минимального восьмизначного пароля это 6634204312890625 комбинаций, на современном железе это займёт тысячи лет.
    2. Правильно он ответил. Перебирать на самом роутере это 1 комбинация в несколько секунд. Перебор хеша -- сотни тысяч комбинаций в секунду. И даже с такой скоростью это занимает десятки и сотни лет.
    3. Смотря какой стандарт. Их там десятки. Ни в одном из них не передаётся пароль, это не имеет смысла. Стандарт для пользователей называется WPA2-PSK. Если бы ты не спрашивал у статистической модели, а просто погуглил, нашёл бы перевод этой аббревиатуры. PSK значит Pre-Shared Key. Pre-shared значит, что он заранее известен, зачем его передавать, если оба его знают? Достаточно просто статью открыть на википедии и почитать. Там всё расписано как и что происходит.
    Ответ написан
  • Где и как искать описания современного Battlenet протокола?

    TrueBers
    @TrueBers
    Гуглю за еду
    MITM не особо работает с отличным от HTTP/HTTPS протоколом
    HTTPS и TLS это одно и то же, а в TLS ничего нового не придумано, и mitm как был рабочим, таким и остаётся.

    Чтобы осуществить его, нужно отвязать клиент от Certificate Pinning. Для этого нужно провести реверс-инжиниринг приложения, найти место, где происходит проверка подписи сертификата и запатчить место статически либо динамически.

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

    Другое дело, что клиент батлнета может иметь какую-то защиту от эмуляции. Например слать движения мыши, нажатия клавиатуры, идентификаторы железа, какую-то иную телеметрию, проверив и не найдя которую, может заподозрить эмуляцию и выдать бан.
    Ответ написан
  • Какой бот может удалять эмодзи и специальные символы?

    TrueBers
    @TrueBers
    Гуглю за еду
    Проходиться по Юникодным кодпоинтам и фильтровать по категории.
    Ответ написан
    Комментировать
  • Как обновить с++ на мак?

    TrueBers
    @TrueBers
    Гуглю за еду
    Нажми Cmd+Shift+P.
    Там напиши c++ edit config, выбери пункт C/C++: Edit Configurations (UI).
    Там внизу найди C++ standard и выбери c++23.
    Ответ написан
  • Как сделать графику на fasm?

    TrueBers
    @TrueBers
    Гуглю за еду
    Учить ассемблер и писать свою ОС это примерно как учиться сварке и строить космический корабль.
    Ассемблер это только 1% от всего, что нужно изучить.
    Тебе нужно решить кучу архитектурных проблем сначала, а потом уже думать о графике.

    Посмотри вот сюда. Там описаны фазы создания операционной системы. Согласно этому туториалу, графика это уже третья фаза. Так что тебе ещё первые две предстоит осилить, прежде чем приступать к графике.
    Ответ написан
    7 комментариев
  • Не работает дополнение кода vscode?

    TrueBers
    @TrueBers
    Гуглю за еду
    Поставь питон через pyenv.

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

    Питон в brew тоже довольно кривоват и нужно много с бубном плясать вокруг него, чтобы заставить адекватно работать с pip.
    Ответ написан
    Комментировать
  • Как идентифицировать target в build.rs?

    TrueBers
    @TrueBers
    Гуглю за еду
    А как оно будет работать, если build.exe для того и предназначен, чтобы запускаться самим тулчейном на хостовой системе, а не на таргете?

    Вот список переменных окружения, которые получаются через std::env::var в build.rs. Для target-triple тебе нужен TARGET.

    Чтобы получить host-triple, нужна переменная HOST.
    Ответ написан
    Комментировать
  • Как вызвать ядро со второго сектора дискеты из загрузчика на первом секторе дискетты?

    TrueBers
    @TrueBers
    Гуглю за еду
    Прочитать с диска в память и передать управление?

    Миллион статей в интернетах с девяностых годов же.
    https://wiki.osdev.org/Rolling_Your_Own_Bootloader хотя бы посмотри.

    Через int 13 читай следующий сектор и передавай управление через jump.
    Ответ написан
  • Рекомендации по созданию приложения на C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Плюсы и гуй в 2024-м это уже не смешно.

    Графические интерфейсы на плюсах развиваются сейчас как полудолхая кляча. Баги по 15 лет не могут пофиксить в Кьюте, который тебе советуют. К тому же, Qt был на плюсах лет так 15 назад. Сейчас там всё на QML пишется и чистые плюсы самой компанией уже давно не поощряются. Нужно понять главное: каждой задаче -- свой инструмент. Если будешь писать такую программу на плюсах, будешь страдать. Много страдать. Не начало нулевых так-то, уже столько всего под эти задачи есть удобного, что стоило бы изучить эту сферу.

    Например, посмотри на Flutter. Очень приятный у шустрый фреймворк для создания графических приложений. Язык Dart учится с нуля за 2-3 дня. Написал на одном языке один раз, а работать это всё будет начиная от мобил и ПК, заканчивая вебом, Raspberry Pi, бортовым компьютером Теслы и Тойоты, телевизорами, фоторамками и прочими экзотическими устройствами.

    C++ сейчас учить нужно только для общего развития, писать на нём новые проекты не советую. Есть множество современных, куда более адекватных и не таких затратных по времени и силам языков, как Rust -- отличная замена C++, Zig -- крутая замена Си.
    Ответ написан
    Комментировать
  • Как заставить бота тг писать кириллицей?

    TrueBers
    @TrueBers
    Гуглю за еду
    Ну он же чёрным по белому пишет:
    Bad Request: strings must be encoded in UTF-8

    Кодируй строку в UTF-8 и отправляй.
    Ответ написан
  • Безопасно ли подключаться к Mikrotik'у через Winbox через интернет?

    TrueBers
    @TrueBers
    Гуглю за еду
    Самый адекватный способ использования сетевых устройств:
    Оставлять наружу только SSH, а через него пробрасывать локально необходимые порты хоть с шифрованием, хоть без него.
    Ответ написан
    Комментировать
  • Чем отличается выполнение программы на x86 процессорах 2003 и 2024 года выпуска?

    TrueBers
    @TrueBers
    Гуглю за еду
    Конечно разница есть. Не просто ж так вкладывают сотни миллиардов в исследования.
    Даже если взять 2 процессора одинаковой частоты и с одинаковым количеством ядер, будет множество отличий.

    1. Существует конвеер исполнения инструкций. Который состоит из портов выполнения. С каждым новым поколением процессора этот конвеер допиливают. Улучшают синхронизации кешей, меняют в целом принцип работы кешей и порядок выполнения инструкций. Добавляют новые порты. Перепиливают микрокод для инструкций, используя эти изменения.
    2. Переупорядочивание выполнения инструкций. Каждый новый проц что-то да делает с этим. Улучшают сам алгоритм переупорядочивания, избавления потоков выполнения от лишних зависимостей данных, увеличивают внутренние буферы, используемые для этих целей. В итоге растёт retired instruction per clock.
    3. Предсказатели переходов постоянно совершенствуются, меньше тупняков конвеера дают, меньше сбросов кеша.
    4. Декодер инструкций. Fetch-буфер растёт, буфер декодинга растёт, буфер переупорядочивания растёт.
    5. Интерфейсы взаимодействия с памятью тоже совершенствуются. Одноканальный DDR из 2003-го, который требует отдельного контроллера памяти на северном мосту, и мноканальный DDR6 из 2025-го -- мягко говоря, вещи из разных миров. Не только память должна быть быстрой, но и процессор должен уметь общаться с этой памятью. В конце нулевых контроллер памяти начали встраивать в сам процессор, это позволило снизить задержки доступа к памяти в разы.

    А ещё много-много тонкостей, которые не афишируются публично и держатся в коммерческой тайне.

    Компилятору конечно нужно это знать, помогать процессору хотя бы избавлять инструкции от зависимостей данных, чтобы процессору было проще и быстрее их спекулятивно исполнять и предсказывать переходы. Не критично, код работать скорее всего будет с любым компилятором, но намного медленнее.
    Ответ написан
    3 комментария
  • Как организовать оптимальную безопасность для своего онлайн мультиплеера на Android?

    TrueBers
    @TrueBers
    Гуглю за еду
    Не нужна никакая защита, если у тебя на сервере вся логика, а клиент просто рисует карты и анимации.

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

    Просто отслеживаешь в логах ошибки, когда при одном допустимом множестве действий, приходит недопустимое. Если от определённых игроков такого больше, чем пара штук -- показываешь ему предупреждение, чтоб прекратил. Если продолжается, просто банишь.
    Ответ написан
    Комментировать
  • Что изучать для создания ботов на андроид-игры?

    TrueBers
    @TrueBers
    Гуглю за еду
    Есть 2 варианта:
    1) Реверсить игру, инжектиться в память, вытаскивать внутренние структуры и использовать их для бота.
    2) Писать на машинном зрении систему уровня автопилота Теслы.

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

    Во втором: обмазаться лекциями каких-нибудь классических профессоров по этой тематике, тех же Andrew Ng и Sebastian Thrun. Изучить, как делается примитивный автопилот на машинном зрении, и пытаться применить его в боте.

    Второй вариант, конечно, круче, но потребует несколько лет изучения и экспериментов. Первый же вариант требует меньше знаний, но опять же уйму времени, чтобы ковыряться во внутренностях игры.
    Ответ написан
    Комментировать
  • Проблема изучения C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    К чёрту плюсы. Это гавно мамонта только на легаси поддержке сейчас остаётся у бородатых дедов. Учи Раст. На него переходит большинство адекватных команд. Язык в разы приятнее и эффективнее. Писать на нём в 5 раз быстрее, чем на плюсах. Спецификация не на 5 тысяч страниц, а от силы 500 не наберётся.

    У тебя другая проблема: язык это инструмент. Ты нашёл молоток и ищешь гвозди. А когда в руках молоток, всё кажется гвоздём.
    Сначала пойми, что тебе интересно. Какая сфера и область разработки. Пет-проекты нужно делать для себя. Никто за тебя их не придумает. Когда нет идей в голове, всё равно какой язык учить, если он не пригодится.
    Ответ написан
  • Можно ли использовать в wasm загрузку dll библиотеки?

    TrueBers
    @TrueBers
    Гуглю за еду
    В WebAssembly изначально изолированная среда для исполнения. Он ничего не знает про DLL и вообще что-то за пределами модулей.
    Браузеры тоже пишутся так, чтобы никакие левые дллки не могли вмешиваться в процесс их работы и делать, что хотят.

    Единственный вариант -- это тяжёлый реверс браузера и инжект дллки и кода в рантайм.
    Ответ написан
    Комментировать