Задать вопрос
  • Порекомендуйте плагин для интеграции ИИ в MSVC?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вдруг завтра уже наступило, а я не заметил
    наступило уж хз когда. Просто есть 2 вида пользователей LLM'ок:
    Кто задаёт странный one-shot вопрос с неподходящим контекстом, а то и без него и пытается получить из него ответ. Туда-сюда копи-пастит, получает кучу галлюцинаций, кривого нерабочего кода, бомбит, что нейросети ваши только котиков рисовать и сидит злой, смотрит, как другие за день месячные задачи закрывают.

    А есть второй вид, который берёт нормальный инструмент (Cursor, Refact, Windsurf, RooCode, Cline), изучает его и пользуется. Да, надо потратить время на изучение! Изучить prompt engineering, обмазаться инструкциями к проекту, системными промптами, подкинуть документацию, context7, подключить MCP, RAG, разобраться, как пользоваться агентом, воткнуть кастомный режим типа memory bank, поставить улучшайзер промптов типа supercode.sh, мультиагента типа Roo Commander. И кодинг одной кнопкой левой пяткой станет реальностью.

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

    В идеале, чтобы ИИ понимал, что такое структура проекта
    Это не в идеале, это чуть ли не единственный рабочий вариант. LLM это языковая модель, token predictor. Она ничего больше не умеет, кроме как предсказывать следующий токен(букву, слово, строку, и т. п.). Без контекста проекта ему нечего предсказывать, грубо говоря. Это рулетка рандомная получится, если не давать ей контекст.

    Я знаю, что я слишком многого хочу
    То, что ты хочешь, LLMки уже умели года 3 назад. Главное написать правильный prompt.

    однозначно твоя задача красиво не решается, а еще она очень специфическая, онозначно нужно разрабатывать ИИ агентов под это дело
    уже давно всё разработано, надо просто изучить, как это работает. Ничего специфического в задаче нет. Люди успешно портируют LLMками софт с языков, которые никогда в публичном доступе не были и использовались для 1-2 проектов в дремучих 70-х годах, а вы говорите, что задача описать, как работает код на современном языке, специфическая? Более чем тривиальная.
    LLMки при грамотном использовании могут сейчас буквально всё, что можно придумать: пишут код, тесты, прогоняют эти тесты, смотрят на линтеры, исправляют ворнинги, отлаживают сами код, закрывают задачи на трекерах, делают запросы в базу, решают теоремы используя солверы и всякие Wolfram'ы, даже реверс-инженерят бинарники без исходников! Объяснить, как работает функция — это не запрос, это ничто.

    а потом ещё расписыет, что и зачем он сделал
    Для этого системные промпты придумали. Там можно попросить не расписывать, и он перестанет это делать. Можно попросить любой формат и стиль кода, комментов, архитектуры. Но надо же изучать, время тратить, да?

    Для чег ои хочу приемлемый плагин сразу поставиь, чтобы тратить время только на полезное
    Так не работает. Для крутого результата надо 8-10 инструментов поставить, изучить их, связать для работы вместе. Это тупо конструктор, один плагин не даст никакого результата.

    Постоянно — ассоциация с людьми, которые говорят, что ЛЛМки не работают:
    когда купил себе рабочую станцию под 10к баксов, а всё, что на ней делаешь, это почту проверяешь, погоду, рецепты ищешь, в одноклассниках сидишь. Написать в чат без контекста и ждать, что он ответит как нужно это из пушки по воробьям, а не нормальное использование громадных возможностей.
    Или другая аналогия: установил блокнот и пытаешься там код скомпилировать, автодополнение получить, тип переменной узнать. Так это же блокнот, он просто чтобы текст писать и читать, для остального нужно поставить компилятор, настроить, узнать какие флаги передать. Отдельно настроить автодополнение, понимать, что есть разные его типы: можно по токенам показывать, можно семантически полностью разбирать. Зависит от настроек и от того, как читалась документация (и читалась ли вообще).
    Нет пока что варианта "установить одной кнопкой и всё завайбкодится". Нужно очень много приложить усилий, но они окупятся.

    Локальная LLMка не нужна, если у тебя не супер-секретные данные, которые ни в коем случае нельзя светить, иначе смерть. Железка, которая потянет это всё на уровне сервиса за 20 баксов, будет стоить под десятку зелени. Если у тебя не госразработка, ядерные исследования и прочие чувствительные данные, нет никакого смысла ставить локальную молотилку за громадные деньги, заплати 20 баксов за Курсор и ещё 20 за ChatGPT/Claude для research-режимов и это покроет 90% задач.

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

    TrueBers
    @TrueBers
    Гуглю за еду
    #include <type_traits>
    #include <utility>
    
    template<class F, class... Args>
    using is_functor = std::is_invocable<F, Args...>;          
    
    template<class F, class... Args>
    using functor_result_t = std::invoke_result_t<F, Args...>;
    Ответ написан
  • Действительно ли это реалии рынка?

    TrueBers
    @TrueBers
    Гуглю за еду
    Забудь про джунство.

    Джуны не нужны были никогда. Мидлы уже не нужны с появлением языковых моделей.
    Пока что остаётся сложно заменить лишь самостоятельных целеустремлённых инженеров.

    Враньё разное бывает.
    Если ты по факту в своих хобби-проектах использовал топовые технологии, понимаешь как они работают, для чего нужны, когда применять, то ты уже не врун, если скажешь, что использовал технологию в продакшене. Да, не в компании, а у себя на проекте, но полностью понимая технологию, никакого стыда нет в том, чтобы буквоедам посылать нужные им слова в ухо.
    А если говоришь, что знаешь, работал, но нихера не можешь объяснить, на микро-примере показать, как это закодить и зачем оно надо, то конечно таких надо гнать ссаными тряпками.

    И в целом, если человек к 20-22 годам (грубо, к окончанию универа) не стал по скиллам сеньором или хотя бы очень крепким мидлом с горящими глазами, то это просто маркер того, что человеку вообще насрать на то, чем он занимается, ему не интересно, нет страсти к своему делу. Зачем такой работодателю? Сейчас нужны те, кто может сходу по ответу нейросети сказать, что она выдала неверный или неоптимальный код, суметь его переделать, оптимизировать. Остальные не нужны, Чатгпт 200 баксов стоит и будет только дешеветь, никакой джун за такие деньги не даст столько полезнейшего выхлопа.

    Я когда шёл на свою первую работу больше 15 лет назад, я уже шёл на сеньора, ибо самоучкой до этого уровня не сложно дойти параллельно с учёбой в бесполезном универе, пиля свои проекты. Уже тогда было глупо начинать с болота джуна или тем более мидла. Проходишь несколько интервью, понимаешь, что интервьюирующие плавают больше тебя, это даёт уверенности, и начинаешь гнуть свои требования уже. Иначе никак, либо ты, либо тебя.
    Ответ написан
  • В чём под Windows писать на Rust'е десктопные приложения?

    TrueBers
    @TrueBers
    Гуглю за еду
    rust-analyzer — это LSP server. Берёшь любой редактор, который может быть LSP клиентом, и пишешь.
    Под VScode единственное расширение — https://marketplace.visualstudio.com/items/?itemNa...
    Что ты нашёл — какой-то мусор.
    Ответ написан
    8 комментариев
  • Как найти удалённую работу с 20+ лет опыта в разработке?

    TrueBers
    @TrueBers
    Гуглю за еду
    Что я делаю не так?
    Например, всё.
    Уехать из России и искать работу на hh... ну, это очень непонятное решение, мягко говоря. Банковские карты поменял, место жизни поменял, а hh-помойку и мышление не поменял.

    Пробовал освоить Linkedin, но я устал от ботов и спама, забил на них. Выхлопа ноль.
    С ресурса, где 90% всех вакансий мира нет выхлопа? Очень странный вывод. Звучит как оправдание не искать работу. На LinkedIn есть всё. И блоги, и эйчары, и компании, и такие же соискатели. Можно общаться, буквально с любым сотрудником любой компании, достучаться хоть до CEO при желании.
    Про ботов вообще первый раз слышу. Ни разу не писали боты за 15+ лет аккаунта.
    hh по сравнению с LinkedIn просто земля и небо.

    Вижу 2 решения: либо вернуться в РФ и продолжать по накатанной как привык. Либо поменять мышление, избавившись от СНГшных принципов поиска работы. Создать нормальный аккаунт на LinkedIn, заняться откликами плотно, законнектиться с сетью единомышленников, подписаться на фиды интересующие. И будут сами писать по несколько эйчаров в неделю минимум.
    А уж получить минимальный оффер, в несколько раз превышающий по сумме СНГшный — дело пары недель.
    Ответ написан
    5 комментариев
  • Отрисовка наложений в windows?

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

    Фундаментально есть 4+ мне известных пути:
    1. Рисовать на контексте устройства напрямую, как, походу, ты и рисуешь. Это самый простой и самый кривой метод. Всё будет мерцать, пропадать. Всё равно придётся как-то синхронизироваться с V-blank, чтобы не выглядело ублюдски и не жрало ядра процессора брутфорсным рендерингом не в попад.
    2. Чуть менее простой и более-менее работающий способ, как уже сказали: создаёшь topmost-layered-transparent окно, ставишь хуки ресайза и перемещения на окно целевого приложения, рисуешь в контекст своего окна, что душе угодно. Иногда могут быть проблемы, если кто-то в эксклюзивном режиме композитора решит, что он более topmost, чем твоё окно. В целом, самый адекватный вариант без хаков.

    Хаки
    3. Инжектиться в сам процесс, выковыривать момент свапа буферов или представления единственного буфера, рендерить туда в момент перед самым представлением. Это может быть GDI, GDI+, Direct2D, DirectX, OpenGL, Vulkan.
    Можно также заинжектиться в композитор, если он используется. Потом точно так же откопать момент свапчейна и рендерить на уровне композитора. Там можно будет скрываться от скриншотов и ещё много чего делать.
    При желании и нехилом опыте, можно очень даже стабильно и красиво всё делать.
    4. Заабьюзить устаревшее API экранной лупы. Где-то были POC'и, что через неё можно вполне годный оверлей сделать. Но придётся повоевать с композитором, либо вообще его отключить. И вообще, хз, работает ли это в современных виндах. Последний раз такие хаки видел в Семёрке.
    Ответ написан
    Комментировать
  • [Python + pywin32] Как эмулировать движения курсора, клики кнопками мыши и нажатия клавиш клавиатуры в игре WoT?

    TrueBers
    @TrueBers
    Гуглю за еду
    вожусь уже 4-ю неделю, и на данный момент прямых ответов не нашел.
    Что можно было делать 4 недели, если ответ гуглится за 4 секунды? За 4 недели можно было игру дизассемблировать и посмотреть, как там всё устроено.

    Способов обработки ввода как минимум несколько. На одном Window Message Loop Legacy Input, который ты насилуешь, свет клином не сошёлся. Он никогда не считался подходящим для игр и точного ввода, почему им пользуется огромное количество игр — загадка. Либо банальная человеческая лень.

    Есть DirectInput, есть XInput, есть window message loop input events, есть RawInput, и GameInput. Первые два давно уже устаревшими помечены, не развиваются с 2000-х и не рекомендуются к использованию в современных играх. Устаревшие ивенты из window message loop, которые ты пытаешься посылать в окно, никогда не рекомендовались для реалтаймовых игр, где важна скорость реакции и точность наведения курсора. Остаётся RawInput. Ну а GameInput — слишком новая, высокоуровневая и специфическая штука, чтобы её часто использовали. Более того, все эти *Input базируются на низком уровне как раз на RawInput.

    Обрати внимание на ивенты, которые приходят перед нужными тебе. WM_INPUT, вот он как раз относится к RawInput. Его то и обрабатывает приложение. Сначала приходит WM_INPUT, а потом за ним старое сообщение просто для совместимости с древними хендлерами. Приходят старые сообщения потому, что разработчики не отключили их генерацию флагом RIDEV_NOLEGACY, либо есть какая-то логика отката к старому обработчику.
    И самое главное, WM_INPUT генерируется HID-железкой внутри самого системного хендлера событий. То есть самому послать это сообщение от лица пользователя невозможно.

    Эмулировать RawInput можно только аппаратно/драйвером/гипервизором, либо внедрившись в код игры. Придётся реверсить игру и разбираться в логике обработки сообщений. Возможно, можно как-то заабьюзить логику, которая проверяет, будет ли обрабатывать сырой ввод, и вдруг есть какое-то условие или флаг из конфига, при котором произойдёт fallback, который сбросит обработку WM_INPUT на старые ивенты.

    PS. С ответа про обработку ввода через графические API поржал :D. Нормальная шутка, смешная.
    Ответ написан
    3 комментария
  • Я в РФ, если пройду собес в компанию из РБ, Казахстана и т.д. обязательно ехать туда?

    TrueBers
    @TrueBers
    Гуглю за еду
    Меньше думай и слушай чушь!
    Не существует никакой русофобии, так же как и нет для тебя никаких "недружественных стран", весь мир дружественный, если ты адекватный и общаешься с адекватным человеком на той стороне провода. Если хочешь работать где угодно, выкинь этот пропагандистский мусор из головы. Адекватному работодателю до жопы вообще из какой ты страны, откуда работаешь, какому богу молишься.

    Если ты крутой спец, а им надо тебя заполучить, поверь, в ход пойдут любые методы тебя урвать. И как платить найдётся, и как контракт заключить, и как сделать так, чтоб тебе было комфортно, главное работу чтоб делал круче всех. Даже США с их драконовскими законами про разрешение на работу и резидентство, имеют кучу лазеек, чтобы протащить понравившегося кандидата.

    Проксей — миллион, способов оплаты — сотни, способов легально платить налоги — десятки. Главная проблема — лень. Лень твоя и лень работодателя, других преград нет.
    Ответ написан
    5 комментариев
  • Стоит ли использовать блоки кода для ограничения области видимости?

    TrueBers
    @TrueBers
    Гуглю за еду
    Код нужно писать так, чтобы его было удобно читать! Основная задача кода — быть прочитанным человеком, в первую очередь, а потом уже компилятором.
    Эти скобочки вносят колоссальный мусор и шум в беглое чтение, при том, что реально без них обойтись можно в 99.999% случаев.

    Единственный, мне известный случай, когда это реально надо — в низкоуровневом программировании драйвера или ядра своей ОС. Когда ты знаешь захардкоженное значение размера стека и тебе нужно в одной функции выделить что-то размером в почти весь твой стек, что-то с этим значением сделать и резко сразу же его очистить, чтобы не стек уплыл в оверфлоу при использовании ниже. Тогда можно воспользоваться этим хаком. В других случаях адекватный человек этим пользоваться не будет.
    Ответ написан
    Комментировать
  • У кого есть картинка пути развития ИБ специалиста?

    TrueBers
    @TrueBers
    Гуглю за еду
    Херачить аки конь – вот единственный путь развития, а не какие-то дурацкие картинки в интернетах рассматривать. Браться за всё, до чего можешь дотянуться и жадно поглощать знания. Иначе не прорвёшься.

    Эта диаграмма из хабра-статьи Positive Technologies. А если точнее, с их образовательного подразделения.
    Pdf-версия.

    Там же даже логотип и название компании указаны! Если ты не в состоянии даже нагуглить картинку из открытого источника... боюсь, до карьеры в ИБ ещё очень далеко.
    Ответ написан
  • Обьясните в чём суть инкапсуляции?

    TrueBers
    @TrueBers
    Гуглю за еду
    Оу, май, 4 человека ответили, и ни один не понимает, что такое инкапсуляция... деградация какая-то, алё!

    Причём тут защита данных? Причём тут контроль доступа? Сокрытие данных? Геттеры, сеттеры? private, public?
    Это всё не имеет никакого отношения к инкапсуляции, это всё побочные эффекты, либо способы реализации в конкретном языке.

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

    ООП и его фишки тут не причём. Ни геттеры, ни сеттеры, ни private\public никакого отношения к этому не имеют. Инкапсуляция может быть даже статической, когда, например разрешаются модули во время компиляции, и язык вообще не должен быть объктно-ориентированным при этом. Инкапсуляция может реализовываться вообще распределённо по разным нодам, которые реализуют интерфейс. Да и ещё чёрт знает как. Скрывать данные не нужно от пользователя. Часто даже удобно обратное -- не писать кучу бойлерплейта, а просто дать возможность пользователю сконфигурировать интерфейс через изменение стейтов в его реализации напрямую, если позволяет платформа, соблюдая инварианты. Это будет более верным архитектурным дизайном, нежели городить какие-то костыли "вдруг пользователь идиот и всё поломает".

    На этом всё, это и есть инкапсуляция.
    Ответ написан
    Комментировать
  • Можно ли в nftables добавить счетчик для заблокированных IP?

    TrueBers
    @TrueBers
    Гуглю за еду
    Почитать же доку можно, не?
    Достаточно counter добавить к правилу и всё будет считаться.
    Ответ написан
    Комментировать
  • С чего начать чтобы написать полностью свой гипервизор с 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.
    Ответ написан