Для тех, кто собирается писать комменты типа «почему бы не поставить распбери, ардуйню и т.п., вместо того, чтобы покупать сей девайс», стоит пояснить. Это контроллерчик (хотя их почему-то модно называть «реле») промышленного класса, который имеет всякие сертификаты, и он действительно довольно надёжен (в отличие от вашего говноскрипта на питоне, запущенном на очередной китайской поделке), а ещё его можно программировать прямо в поле с этого маленького экранчика и кнопочек.
Продуманная, сделанная на совесть, а главное — полезная вещь. Такая редкость в наше время…
Отец заслуживает глубокого уважения.
Что характерно, технологии 60-х годов позволяли создавать отличные вещи. А современные технологии, похоже, годятся лишь для создания сраных чайников с вайфаем и софта, которому каждый год подавай вдвое больше ресурсов при снижении полезности и обрастании свистоперделками и глюками.
Что будет, когда размер цепочки увеличится до > 9000 ГБ? Если все перейдут на «лёгкие» клиенты, как это повлияет на надёжность сети? Если все начнут юзать биток, будет ли сеть вообще успевать синхронизироваться, даже с «лёгкими» клиентами?
> Ведь удобно будет свернуть все окна, скажем, сжатием руки в кулак, либо выключить ноутбук хлопком в ладоши.
Кому удобней размахивать руками, а кому — передвинуть палец на сантиметр, чтобы нажать Win+D.
Чего только не придумают буржуи, чтобы впаривать всякую хрень хомячкам, и многие на это охотно клюют…
зы. Зато светодиодик возле камеры выпилили. Особенно забавно это в сочетании с кучей предустановленного хлама из магазина. Впрочем, так вам и надо.
С рекламным говном и адблок пока справляется. Как бы отключить «рекомендованное», «популярное» и т.п. А то там такой «контент», что и на заставки смотреть противнее, чем на рекламу!
Вот это здравая мысль. Тем более, что автор от копирастов получает сущие копейки (если вообще получает). Напимер, с проданной книги — 3-7 рублей. Вам важен труд авторов или барыг? Так зачем поддерживать барыг?
Почему вконтактик не даёт просто подписаться, без всякого запроса добавления «в друзья»? Часто хочется читать кого-то, а напрашиваться «в друзья» неловко или ненужно.
Firefox катится в сраное говно. Пора возвращаться на 3.6. Можно и без закруглённых CSS3 уголков и прочего гламурного дизайна прожить.
зы. И не надо визжать «юзай телнет». Если графика и простое форматирование ещё несёт пользу, то от гламурных дизайнов и анимаций никакой пользы нет (а лишь вред).
Почему никто не вспоминает о конфликтах перехвата? Тулза обязана определять, стоят ли на интересующих её функциях чужие хуки.
Если стоят — то есть несколько вариантов действия. Наиболее разумное — после выполнения своего хука вызвать чужой хук. Обычно хуки ставятся с помощью jmp near long или jmp [imm]. Если такая инструкция установлена, переносим её в надёжное место (пересчитав адрес в первом случае), после выполнения своего хука прыгаем туда.
Также можно убить чужие хуки. Для этого открываем образ нужной DLL (GetModuleFileName/CreateFile), читаем таблицу секций, рассчитываем адрес в файле чистой точки входа в функцию (не забывая, что библиотека может быть упакована, для этого нужно посчитать количество изменённых байт в окрестности точки входа в функцию и убедиться, что это разумная величина). Затем исправляем изменённые байты в ОЗУ. Правда, стоит помнить, что сняв несколько вражеских перехватов, можно вызвать нестабильную работу программы (например, сняли перехват с ZwClose, и теперь вражеский хук не сможет отслеживать закрываемые ресурсы, в результате получим как минимум утечку памяти через структуры данных чужой тулзы). Так что если снимать хуки — то как минимум со всей DLL-ки.
Также не стоит забывать, что после того, как мы установили хуки, на них может посягнуть чужая тулза. Для этого желательно перехватить VirtualProtect и не позволять включить доступ на запись для интересующих нас страниц. Когда же к ним полезет чужая тулза, ловить исключения, определять установку хуков и также вызывать их после своих.
Было бы куда лучше и безопаснее, если бы писаки хуков (вместо выдумывания очередных велосипедов) выработали общий стандарт, учитывающий, что хуков на функцию может ставиться несколько, чтобы не приходилось по всякому извращаться…
Эту винду надо просто уничтожить. В M$ наверно один человек занимается самой системой, а все остальные рисуют очередные прозрачности с закруглённостями (точнее, теперь уже в моде прямоугольности) и быдлокодят всякие центры оповещений на яваскрипте.
Отец заслуживает глубокого уважения.
Что характерно, технологии 60-х годов позволяли создавать отличные вещи. А современные технологии, похоже, годятся лишь для создания сраных чайников с вайфаем и софта, которому каждый год подавай вдвое больше ресурсов при снижении полезности и обрастании свистоперделками и глюками.
Кому удобней размахивать руками, а кому — передвинуть палец на сантиметр, чтобы нажать Win+D.
Чего только не придумают буржуи, чтобы впаривать всякую хрень хомячкам, и многие на это охотно клюют…
зы. Зато светодиодик возле камеры выпилили. Особенно забавно это в сочетании с кучей предустановленного хлама из магазина. Впрочем, так вам и надо.
зы. И не надо визжать «юзай телнет». Если графика и простое форматирование ещё несёт пользу, то от гламурных дизайнов и анимаций никакой пользы нет (а лишь вред).
Если стоят — то есть несколько вариантов действия. Наиболее разумное — после выполнения своего хука вызвать чужой хук. Обычно хуки ставятся с помощью jmp near long или jmp [imm]. Если такая инструкция установлена, переносим её в надёжное место (пересчитав адрес в первом случае), после выполнения своего хука прыгаем туда.
Также можно убить чужие хуки. Для этого открываем образ нужной DLL (GetModuleFileName/CreateFile), читаем таблицу секций, рассчитываем адрес в файле чистой точки входа в функцию (не забывая, что библиотека может быть упакована, для этого нужно посчитать количество изменённых байт в окрестности точки входа в функцию и убедиться, что это разумная величина). Затем исправляем изменённые байты в ОЗУ. Правда, стоит помнить, что сняв несколько вражеских перехватов, можно вызвать нестабильную работу программы (например, сняли перехват с ZwClose, и теперь вражеский хук не сможет отслеживать закрываемые ресурсы, в результате получим как минимум утечку памяти через структуры данных чужой тулзы). Так что если снимать хуки — то как минимум со всей DLL-ки.
Также не стоит забывать, что после того, как мы установили хуки, на них может посягнуть чужая тулза. Для этого желательно перехватить VirtualProtect и не позволять включить доступ на запись для интересующих нас страниц. Когда же к ним полезет чужая тулза, ловить исключения, определять установку хуков и также вызывать их после своих.
Было бы куда лучше и безопаснее, если бы писаки хуков (вместо выдумывания очередных велосипедов) выработали общий стандарт, учитывающий, что хуков на функцию может ставиться несколько, чтобы не приходилось по всякому извращаться…
Айфно)