Kubelet – это свободно распространяемый исполняемый двоичный файл на языке Go (например, файл с инструкциями, написанными на машинном коде; ЦП может непосредственно выполнять эти инструкции).
Здорово! Я неделю назад запустил плату от гироскутера просто засунув в неё искусственный сигнал гироскопов, даже не знал про существование прошивки. С сигналом гироскопов проще, потому что пофиг на распиновку и на параметры моторов. Но протокол там очень странный, я пока не завелось не поверил. 9битный сериал с какой-то абсолютно кривой скоростью.
С точки зрения компилятора такого mainа "не может быть", потому что бесконечный цикл не "можно удалить", а "приводит к неизвестным последствиям". То есть, компилятор считает себя уверенным в том, что main() никогда не вызовется. Поэтому весь его код можно удалить.
Если бы main была while(false), компилятор бы (скорее всего) соптимизировал main() в return;
При этом и main и never_called - экспортируемые метки объектного файла, поэтому должны существовать. И так случилось, что main == never_called. При этом последняя - нормальная функция, и её компилятор компилирует как надо.
Наверное, сработало бы, но это надо отладчиком висеть и выдирать из логов. А когда хром падает в момент загрузки в него моей длл, это становится немного сложно :)
Ссылка на расширение у меня фиолетовая, поэтому я не расстроился :) Это расширение не работает нормально (по крайней мере, у нас). То звука нет, то видео не воспроизводится. Плюс, оно исключительно для ютуба. И плюс, оно задерживает постоянно, а не в зависимости от аудиоустройства.
Создавать поток в другом процессе нужно, как минимум, для отладки этого процесса. Внедрение DLL, опять же, это сравнительно стандартный подход (через поток на LoadLibrary), им пользуются всякие hotkey'и, антивири и т.д.
Если пропатчить chrome.dll (именно там код), то с апдейтом хрома всё сломается. Плюс подпись потратится. Про перехват CreateProcess - читайте доп. главы :) Ну и да, себе хром себя патчить тоже не даст: не важно, какой процесс патчит.
Похожая статья, которую я когда-то переводил, если интересно ещё немного почитать на тему. В частности, немного про обработку в ядре.
https://habr.com/en/articles/438044/
Поле "от кого" не обязательно заполнять, письмо дойдет и без него.
Простите, что?
Не, просто мы забыли, на дискете была очень важная информация, но вы же только скопировали на дискету, вы ж её не форматировали, хе-хе?
А ещё, кажется, точка с запятой в find лишняя, не? Которая после '{}'.
Не, протокол отреверсился часа за 2-3. Он очень простой, но очень нестандартный.
Напишу, может, статью, когда всё вместе соберу.
Здорово! Я неделю назад запустил плату от гироскутера просто засунув в неё искусственный сигнал гироскопов, даже не знал про существование прошивки. С сигналом гироскопов проще, потому что пофиг на распиновку и на параметры моторов. Но протокол там очень странный, я пока не завелось не поверил. 9битный сериал с какой-то абсолютно кривой скоростью.
С точки зрения компилятора такого
main
а "не может быть", потому что бесконечный цикл не "можно удалить", а "приводит к неизвестным последствиям". То есть, компилятор считает себя уверенным в том, чтоmain()
никогда не вызовется. Поэтому весь его код можно удалить.Если бы
main
былаwhile(false)
, компилятор бы (скорее всего) соптимизировалmain()
вreturn;
При этом и
main
иnever_called
- экспортируемые метки объектного файла, поэтому должны существовать. И так случилось, чтоmain
==never_called
. При этом последняя - нормальная функция, и её компилятор компилирует как надо.CorrectHorseBatteryStaple
Если ко мне придёт гость и нагадит в гостиной, я перестану пускать его, а не стану надевать памперсы на каждого входящего.
Иными словами, если библиотека не выполняет требования ABI, надо решать проблему с библиотекой, а не оборачивать всё в дополнительные защиты.
От кривых изменений памяти как защититься, кстати? Всю доступную память на диск сбросить, после вызова функции раскатать обратно?
Но ведь на них выдаются электронные лицензии. На что-то, что делают психи?
А в альтернативной вселенной для чего вообще бифуркаторы, если это псих заболевание и неправда?
while(wait) Thread.sleep() лучше вообще не использовать, если ожидание обещает быть хоть сколько нибудь долгим - используйте семафоры, например.
А ожидание события с точностью до микросекунд - обычно занятие ядра, поэтому там этих спинлоков много.
И если поток не отдать, на однопроцессорной системе это внезапно получится бесконечный цикл.
И оттуда же КДПВ взята :)
Да, должно сработать. Если честно, я про этот способ отладки забыл. Нашёл какой-нибудь способ и успокоился.
Наверное, сработало бы, но это надо отладчиком висеть и выдирать из логов. А когда хром падает в момент загрузки в него моей длл, это становится немного сложно :)
Ссылка на расширение у меня фиолетовая, поэтому я не расстроился :) Это расширение не работает нормально (по крайней мере, у нас). То звука нет, то видео не воспроизводится. Плюс, оно исключительно для ютуба. И плюс, оно задерживает постоянно, а не в зависимости от аудиоустройства.
Спасибо :)
Создавать поток в другом процессе нужно, как минимум, для отладки этого процесса. Внедрение DLL, опять же, это сравнительно стандартный подход (через поток на
LoadLibrary
), им пользуются всякие hotkey'и, антивири и т.д.Если пропатчить chrome.dll (именно там код), то с апдейтом хрома всё сломается. Плюс подпись потратится. Про перехват
CreateProcess
- читайте доп. главы :)Ну и да, себе хром себя патчить тоже не даст: не важно, какой процесс патчит.
// это мост
Я вот такую резал: https://hobarts.com/collections/wood/products/3mm-laserplylite-italian-poplar-plywood-ab-ab-new?variant=40677081645240. Эта — "lite", низкой плотности, но довольно твёрдая. Режется на ура.
Вообще, вся фанера может быть лазерной (без вредных веществ) и не-лазерной (потенциально токсичный при выжигании клей).
Я думал об этом, но видео получаются довольно скучные :) Либо надо ускорять, либо оно медленное. Если много людей хочет видео, могу и сделать.