Задать вопрос
  • Безопасно ли подключаться к 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 и вообще что-то за пределами модулей.
    Браузеры тоже пишутся так, чтобы никакие левые дллки не могли вмешиваться в процесс их работы и делать, что хотят.

    Единственный вариант -- это тяжёлый реверс браузера и инжект дллки и кода в рантайм.
    Ответ написан
    Комментировать
  • Возможно написать авто бота или кликер на JavaScript под онлаин игры по типу WoW или Lineage 2?

    TrueBers
    @TrueBers
    Гуглю за еду
    JS -- встраиваемый язык. Ему нужна среда для запуска сначала какая-то. Вам нужно сначала написать системные низкоуровневые функции, а потом уже через рантайм встроить их в JS.
    Одни словом, это бесполезная трата времени и сил. Проще написать на нормальном, для этого предназначенном языке, а не городить из говна и палок.
    Ответ написан
    Комментировать
  • Почему не удается получить адрес функции?

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

    Если программа не обновляется никогда, то возьми да захардкодь RVA этой функции.

    Если программа твоя, то как у уже сказали остальные, просто сделай символ публичным плюс C abi через extern "C"
    Ответ написан
    Комментировать
  • Как из под Windows писать и отлаживать С++ код под Raspberry pi?

    TrueBers
    @TrueBers
    Гуглю за еду
    Адекватно отлаживать код можно только на той платформе, для которой он пишется. Иначе никак.
    C++ -- он и в Африке C++. Можно писать хоть в блокноте, главное тулчейн, которым он собирается. А у C++ с кросскомпиляцией всё не так уж радужно на практике, как это рисуют в теории.

    Смотря для какого API вы писать хотите, для какой системы. Например, в Убунте тулчейны более древние, чем в Арче. Это накладывает весомый отпечаток на боль, которую придётся испытывать в разработке и отладке.

    при работе по SSH некорректно работают практически все функции glut
    При работе по ssh вообще сложно пробросить графический сервер, чтобы он работал адекватно. А ещё есть как минимум X и Wayland. У них разные методы удалённой отладки будут.

    Проще будет VNC поднять и отлаживать таким образом, чем городить костыли.
    И, как уже сказала копи-паста из бота, используйте GLFW или SDL, они намного проще собираются и отлаживаются, чем говно мамонта под названием GLUT.
    Ответ написан
    Комментировать
  • Ffmpeg ухудшает аудио при конвертации видео?

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

    ощущение

    какое может быть ощущение, если у вас под рукой ffmpeg, который всю досконально информацию по потоку даст вместо ваших "ощущений"? Сравните характеристики потока до и после транскодирования и избавитесь от сомнительных ощущений.

    Банальный параметр -codec:a copy должен помочь в большинстве случаев.
    Ответ написан
  • Как работает виртуальная сеть?

    TrueBers
    @TrueBers
    Гуглю за еду
    1. Адаптер создаётся средствами операционной системы, как простая болванка, которая извне подчиняется всем правилам сетевой маршрутизации, а изнутри чисто программно делает с пакетами то, что написано в коде драйвера-фильтра.
    В винде про это можно почитать на MSDN. Про линукс немного инфы есть здесь.

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

    Физический адаптер можно так же использовать, просто это немного сложнее и требует поддержки определённой технологии от процессора, железки и прошивки, например IOMMU, с помощью которой можно как бы "пробросить" реальную железку внутрь гостевой системы гипервизора. Но при этом сетевой адаптер бесследно исчезнет из основной хостовой системы.

    Ещё более продвинутая технология -- SR-IOV, которая честно поделит устройство между разными системами, но нужна так же поддержка технологии процессором, платой, сетевым адаптером и гипервизором.

    2. Технология NAT это просто подмена адреса и запоминание, какой поменялся на какой, чтобы потом при ответном пакете вернуть его обратно в нужную подсеть. В виртуалках он по умолчанию используется как простейший способ изоляции подсетей. Чтобы подсеть виртуалки не поломала основную сеть. А тем, кому нужны конкретные задачи, могут переключить режим NAT в какой-то другой, более "опасный" для сети режим, при этом понимая, что он делает.
    Ответ написан
    Комментировать
  • Как включить виртуализацию?

    TrueBers
    @TrueBers
    Гуглю за еду
    Этот процессор был очень пограничным для полной поддержки аппаратной виртуализации. Как минимум он ещё не поддерживает аппаратный SLAT, а это прямо ощутимые тормоза.
    Вполне возможно там что-то глючило, и решили вырубить поддержку в микрокоде.
    Плата тоже может ограничено уметь в виртуализацию, т. к. в то время она только развивалась и поддержка вполне могла быть экспериментальной.

    Есть пара способов:
    Обновить прошивку платы.
    Обновить микрокод процессора.

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

    TrueBers
    @TrueBers
    Гуглю за еду
    Подкачка -- это только одна из частей понятия виртуальной памяти. Вы в целом не можете контролировать её. На то она и виртуальная.

    Она может включать в себя все общие замапленные DLL-ки, например. Которые по факту занимают память только один раз на всю систему, а учитываются как будто в каждом процессе что-то отъедают.
    Процесс может замапить себе хоть терабайт памяти виртуальной, но физические страницы будут выделены только по факту Copy-on-Write.

    Забейте на виртуальную, главное, чтобы физической хватало.
    Ответ написан
    Комментировать
  • Как конвертировать системный диск с Windows 10 с MBR в GPT?

    TrueBers
    @TrueBers
    Гуглю за еду
    Официальной утилитой от MS?

    Но там слишком много тонкостей и условий, чтобы всё сработало. Советую использовать крайне осторожно подобные утилиты, только в случае, если есть полное понимание того, как устроена дисковая разметка и в чём в принципе отличие MBR от GPT на низком уровне.

    Намного проще заново установить систему в режиме UEFI.
    Ответ написан
    Комментировать
  • Почему дублируются Leases в DHCP Mikrotik?

    TrueBers
    @TrueBers
    Гуглю за еду
    адреса повторяются по несколько раз для 1 мак
    Мак никак не гарантирует уникальность лиза, если передана опция 61 Client-identifier. Вы замазали зачем-то кучу полезных для дебага данных, как будто вас по маку сейчас сдеанонят... DHCP сервер должен идентифицировать лизы по паре ClientID:IP, и только если не передан ClientID, использовать пару HardwareAddress:IP. Проверьте, что у вас там под замазкой.

    Таймер, который больше, не просто не уменьшается, а растёт.
    Если он растёт, значит приходят одинаковые пары client-id(61):requested_IP и продлевают жизнь лиза, соответственно.

    Это может быть связано с несколькими инстансами работающих dhcp-клиентов у пиров. Какой-то косяк у этих реализаций с transaction-id, возможно. Ну или какой-то косяк в архитектуре сети, релеях.

    Попробуйте отдавать лизы по юникасту, если включен Always Broadcast.

    менял. было 3 часа, сделал 1 час. но после этого уже перезапускал и всё сбрасывалось. стоит ли делать такой малый промежуток?
    Не в 90х же живём. Вообще стоит 10 минут поставить время жизни, за 3 часа в 2024-м может слишком много чего произойти. Лизы по 2 дня у вас на скриншоте -- это треш какой-то. Где-то явно лишние реквесты приходят пачками.

    Что в логах по топику dhcp приходит? Что сниффер показывает?
    Ответ написан
    Комментировать
  • Виндовс бут менеджер стоит на одном диске, а сама винда на другом?

    TrueBers
    @TrueBers
    Гуглю за еду
    В современных системах на базе UEFI загрузчик почти всегда находится на отдельном EFI system partition. Переносить его никуда не нужно, так и должно быть.
    Он оказался на другом диске, потому что вы так установили систему или ставили с какой-то кривой сборки. В теории, если есть неразмеченного пространства в районе 500Мб, можно создать EFI system partition и скопировать на него содержимое предыдущего. Либо как уже написали, запустите процесс восстановления загрузчика. Не знаю, что он будет делать в этой ситуации, но попробовать можно, перед этим отключив ненужный диск.
    Ответ написан
    Комментировать
  • Дамп игры на c++?

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

    На Юнити бывает как минимум два типа кода: il2cpp, когда генерируется код на C++, а потом компилируется в нативный код; второй тип -- managed .net код. Для каждого из них нужны свои инструменты и знания.

    Достаточно дизассемблера типа Ghidra, Ida Pro, radare2. Отладчика типа WinDbg, x64dbg или CheatEngine. Фреймворка динамической инструментации типа Frida. Для managed кода хорошо подойдёт .dotPeek или ILSpy в качестве декомпилятора.

    Ещё очень неплохо будет знать какой-нибудь низкоуровневый язык программирования типа Rust, Си, C++.

    Ну и ещё несколько тысяч часов опыта...
    Ответ написан
  • Как починить синий экран?

    TrueBers
    @TrueBers
    Гуглю за еду
    По одному дампу мало что можно сказать.
    Похоже на баг драйвера NVIDIA Share, которая в фоне постоянно записывает кадры и позволяет из этого буфера либо сохранить видеофайл, либо наделать скриншотов.
    Попробуйте отключить в NVidia GeForce Experience, если включена.
    Ответ написан
  • Что сделать, чтобы Unity не ухудшал спрайт?

    TrueBers
    @TrueBers
    Гуглю за еду
    Отключить фильтрацию текстур.
    Ответ написан
  • Можно ли создать приватный сервер игры?

    TrueBers
    @TrueBers
    Гуглю за еду
    1. Скачать игру.
    2. Провести реверс-инжиниринг.
    3. Формализовать сетевой протокол.
    4. Реализовать его на любимой технологии.
    5. Написать сервер.
    6. Играть.
    7. PROFIT!
    Ответ написан
    4 комментария