𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
194 subscribers
561 photos
48 videos
5 files
59 links
ニャン
Download Telegram
Признавайтесь
Кто это придумал
Какой нафиг счетчик инпутов
Эпики, вы что там курили, поделитесь
❤‍🔥5💯1
Знаете, а ведь брехня о том что "через сайт могут взломать ваше устройство" - не такая уж и брехня

На личной истории: Вчера рутировал свой телик для НЕВАЖНО каких целей, получая полный root-доступ к ОС телевизора (Начинка: WebOS 3.9.0, на базе кастрированного Linux 4.4)

И самый прямой способ: зайти на сайт https://rootmy.tv/ и просто одной кнопкой сделать все

Я, как программист, подумал: Ну бред же! Кто на это поведется? Браузер запускается в своей песочнице. Выбраться оттуда еще надо уметь!

Но оказывается.... Можно

В общем, если не ходить вокруг да около: Вся графическая начинка телика основана на браузере Chromium. Но не просто основана - а глубоко интегрирована с самой WebOS. И у WebOS есть такие понятия, как "службы" - по сути обычные приложения телевизора (как apk на телефоне)

Но, для общения между приложениями, была создана кастомная WebOS'овская шина под названием Luna-Bus (аналог D-Bus из Linux) - то есть, любое приложение или консоль могла отправить любой службе запрос - и та уже его исполняла. Удобно, правда?

Но собирая фулл-хаус, получаем простую последовательность: Сайт запускается на телике. Так как Chromium плотно интегрирован с WebOS, то прямо через JS код мы имеем возможность вызвать Luna-Bus

На этой шине мы просим системному приложению "downloadManager" скачать нам файлик с инета. По дефолту он сохраняет файл в каталог пользователя

Но мы передаем путь.... С двумя точками! То есть "../../", поднимаясь директориями выше, до самой корневой папки, а оттуда уже идем в корни ОС

Файл скачивается (обычно это переписанный скрипт при запуске ОС), перезагружаем телик, и... все! Root-доступ у вас в руках! Просто зайдя на сайт! Просто в браузере на телике! Безумие...

И да, делая работу над ошибками: Системная служба "downloadManager" была запущена в root-доступе, то есть могла менять системные файлы. А также сама служба внутри не имела валидацию входных путей (так как обычно шиной Luna-Bus пользуются исключительно разработчики, а значит они ПО ИДЕЕ не могли прислать бредовый путь)

Вот такие дела
❤3😱1🎉1
Root Engine / Basement

Собрал весь рабочий код для фундамента движка в виде одного репозитория

Куски кода были взяты с:
- Старых наработок Root Engine
- RootShadeBox
- Shoko (Compile-time UI Framework)
- Advanced AVR Templates
- MicroBuild
- RootSAI (Simple Assembler Interptere)
- Из личного OneIdiotOneVulkan
- И ASAI

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

Настроения нет, поэтому ничего добавлять не хочу - Просто изучайте, критикуйте, берите на заметку и используйте (лицензия MIT)

И да - хороший фундамент для движка стоит дороже, чем эфемерная иллюзия о том, что все закончено
🔥2
Root Engine / Basement

1) Динамический массив TArray, стандартный сишный аллокатор FAnsiAllocator, аллокатор с локальным буффером TInlineAllocator

2) Платформо-независимый слой (HAL): Создание диалоговых окон FPlatformDialogs, создание-открытие-взаимодействие с файлами FPlatformIO + FPlatformFile

3) Бинарная двухсторонняя сериализация данных FArchive. Метафорично выбран оператор xor ^ вместо потоковых << - кто понял тот понял
❤‍🔥2💯1
Показалось
😁3👀1
Вот насколько надо просто чувствовать С++

Решил значит отладить цикл, добавил после строки GWires.Emplace(...) вызов остановки отладчика __debugbreak(), чтобы посмотреть на локальные переменные

Открываю - А у меня просто нет этих переменных!

И первые мысли: Проблема в отладчике? Нет. Проблема в IDE? Нет. В чем-то еще? А может... Деструкторы, бл!

Кароче: С++ скрытно под собой, после создания обьектов кабеля (Cable) и провода (Wire) вызывает их конструкторы (FCable::FCable() и FWire::FWire())

Мы работаем с этими обьектами

Но уже после - наоборот. Сразу вызывает их деструкторы (FCable::~FCable() и FWire::~FWire())

И затем я вызывается отладчик, когда обьекты уже как бы удалены

Решение? Ну, я ничего лучшего не придумал, кроме как после вызова отладчика вызвать консоль и написать что-то наподобие printf("123") и все :)

Зачем? Чтобы отложить вызов деструкторов ПОСЛЕ моего вызова отладчика
🔥2
WebAssembly? WebAssembly!

Что могу сказать
Не зря. Вот не зря сука я говорил, и не однократно говорил, что STL эта ваша - фигня полная! Я, лично, не доверяю STL/std

И не зря....

Начал значит я грызть гранит науки под названием WASM, добавил еще один слой абстракции (HAL) для платформы Web

И тут вскрылось... что стандартная std::map (которую я временно использовал) у MSVC и Clang настолько разные - что на втором у меня тупо компилятор отказывался работать, ломаясь где-то очень глубоко внутри STL

Ну, не долго думая, быстренько написал еще один собственный контейнер TMap и... все! Проект запустился с пол пинка

А вот теперь представьте - если бы я изначально не писал свои велосипеды контейнеры, а сидел бы на готовеньких STL? Хо-хо-хо
❤3❤‍🔥1🎉1
Root Engine / Crash Handler

Ну все, дорогие друзья

Теперь после бесячего UnrealCrashHandler.exe, вас будет еще и бесить RootEngineCrashHandler.exe

Мои поздравления!! 🎉🎉🎉

Ну а если серьезно - Да, теперь у меня есть собственный Crash Handler, прямо как во всех взрослых движках

И да, как оказалось делать их - не так уж и сложно. Зато при вылете - я могу не труситься отладчиком, а тупо открыть .dmp файл и увидеть что-да-как

Все, официально это имба сегодняшнего вечера
🎉3
This media is not supported in your browser
VIEW IN TELEGRAM
❤2
Но кстати говоря, от двиглодела к двиглоделам

Сегодня в тг канале Грокаем C++ / std::source_location обсуждался std::source_location

Полезная штука однако. Например для логирования. Чтобы получить имя функции и ее строку с типизацией компилятора, вместо использования тупого препроцессорного __FILE__ и написания макросов по типу UE_LOG

Но, std::source_location - это только фича только у C++20? Формально да....

Но если копнуть - нет! Она вся основана на интринсиках компилятора, которые существовали задолго до С++20. А это значит...

Что возьму я велосипед, и соберу собственную FSourceLocation прямо на C++17! Благо пишется быстро, зато логировать без макросов станет легче и чище
🔥2
AAAHHHHH F*KING LINUX!!!!!!

КАК ЖЕ ТЯЖЕЛО БЫЛО ДЕЛАТЬ БИЛД ПОД ЕТОТ ВАШ ЧЕРТОВ ЛИНУКС

glibc такая непостоянна... я в шоке. Я даже стал больше винду ценить

Но да ладно, теперь Root Engine официально может билдиться на: Windows, Linux, и Web! (WASM)
💯2
Android!

Все, я устал, уже думаю закончить с Silicon Forge и выпустить его вам на растерзание, а сам пойду писать рендерер

У меня как раз появилась одна идея, возьму идею Кармака и просто дожму немного
🔥3
Id Tech 8 GI.pdf
2.7 MB
Специально для вас скачал украл пару докладов с SIGGRAPH

Что ж, будет прочесывать, изучать, да писать

А что думали? Мы тут в шутки играем? Качаем готовый Raylib 3D и ImGui? Ага...

Включаем расслабленную электронную музыку и проходимся по базе:

- FrameGraph от Frostbite - База по RDG, без которой управлять Vulkan'ом или DX12 в принципе не возможно. Вот ее штрудируем до посинения

- Clustered Deferred and Forward Shading - Любимый мною кластерный шейдинг, от чего я и буду отталкиваться

- VPL based GI - Ну и как же не попробовать использовать халявные динамические источники света для генерации Эммисива как у GI?

- ID TECH 666 и Id Tech 8 GI - ну, у этих безумцев все стабильно. Первое что они считают: Это количество занятых регистров на варпе видеокарты
❤‍🔥3❤1💯1