Post:#471944 Date:06.06.2015 (00:41) ... 21 августа 1991 года закончился августовский путч в СССР-
24 августа 1991 в центре Киева. Люди приветствуют провозглашение независимости
25 августа 1991 года Линус Товальдс опубликовал ядро Linux Date: 25 Aug 91 20:57:08 GMT
Просто совпадение? Можно быть, но есть еще много других совпадений.
Главное- это одинаковая методика зомбирования адептов Линукса и Нэзалежной.
Линуксоидов в мире точно столько же сколько и укропов- около 1 %.
О чем не спросишь линуксоида- ответ : хто нескаче тотмастдай
airman Пост: 479057 От 27.Sep.2015 (06:19)
proggi - вот допустим кто то выдаст тебе точный способ - как воспользоваться "багами" и запустить на линуксовой машине "чего хочешь" - дальше то что?
Ну если дадите мне... ну продам конечно.
Но где это написано что я чтото покупаю???? Или предлагаю за это деньги???
Не, деньги никто ни с кого не спрашивает, я лишь хотел показать, что даже появление точной информации у кого то одного - мало что меняет в общем. Тема сложная - люди, в массе своей, в таком разбираться не любят. Поэтому все так примерно и останется - как есть. Информация же, выложенная в этой ветке ценна тем что указывает ЧТО и ГДЕ может быть "зарыто"! Это как раз тот случай когда "и не подумал бы, а вот оно как...". Поэтому деду Ивану - спасибо! Ну и proggi - тоже спасибо! - за то что не ругается грязно, но, согласно своего понимания - ведет логическую беседу (это ведь не всем доступно).
Да, это публичная часть. Но она представляет кэш как черный ящик, который работает по своим правилам.
А кэш- это ассоциативная память и есть схемотехника такой памяти, из которой следует что должны быть еще и другие регистры.
Это как блок питания- публично вот шнур с вилкой и клеммы с нужным напряжением на выходе. Остальное вас не касается.
А по схемотехнике мы знаем что там внутри должен быть выпрямитель, кондер, защита от коротца и прочее. Хотя об этом и не говорится.
Так и кэш- публично объявляется что проц при каждой новой выборке проверяет нет ли этих данных или команд в кэше. А как он это делает - молчок.
А ведь не в режиме нулевого кольца он не имеет доступа к регистрам кэша.
Тут надо сразу добавлять- к ЭТИМ регистрам. Значит есть другие, к которым он имеет доступ всегда.
Так и процессоры все разные Нету универсального кода, и универсальной технологии дли взлома, пусть то на ассемблере пусть на ином языке.
Налчие лишних частей в коде, могут лиш быть из за универсальности кода используемого тем или иным процессором!!!
proggi Пост: 479122 От 28.Sep.2015 (00:29)
Нету универсального кода,
... могут лиш быть из за универсальности кода
Что то у тебя с логикой, не?
Так могут быть или не могут? Есть или нет?
Нет универсального компилятора. Но для каждого проца гцэцэ пишет свой компилятор и по своим универсальным правилам. Которые не совпадают
с другими компилями, и везде свой лишний код, присущий лишь гцэцэ.
Это не значит что он всегда медленнее из за избыточности.
Там есть куски которые даже и не выполняются- они нужны чтобы след оставить в кэше.
Кэш так устроен- как говорил штирлиц- запоминается лишь последнее слово.
proggi Пост: 479122 От 28.Sep.2015 (00:29)
Нету универсального кода,
... могут лиш быть из за универсальности кода
Что то у тебя с логикой, не?
Так могут быть или не могут? Есть или нет?
Нет универсального компилятора. Но для каждого проца гцэцэ пишет свой компилятор и по своим универсальным правилам. Которые не совпадают
с другими компилями, и везде свой лишний код, присущий лишь гцэцэ.
Это не значит что он всегда медленнее из за избыточности.
Там есть куски которые даже и не выполняются- они нужны чтобы след оставить в кэше.
Кэш так устроен- как говорил штирлиц- запоминается лишь последнее слово.
Все правильно написано, нет универсального кода, и универсальной технологии для взлома, в виду того что все процессоры разные, иными словами для каждого кристала свой подход.
А вот код генерируемый компилятором использует универсальные симантические куски кода для получения той или иной цели.
Это означает ЛИШ ТО что код компилируется универсальный, чтобы можно выполнять подо многими процессорами, но в виду того что процессоры разные, методика выполнения везде уникальна (разный размер кэшей , длинны и количества конвееров и прочее), и не является универсальной (на одном проце программа пометилась в кэш на другом нет (размеры кэша разные и прочие)
У меня мысли такие:
Не стоит забывать, что современный процессор, со всеми его регистрами и организацией во многом - "не настоящий". Настоящий - другой, он исполняет микрокод, а вот за счет микрокода то и получается в некотором смысле "абсурдная ситуация": "пользователю" дают много сложных команд (- на, разбирайся - чтоб ты подавился), но "в железе" это никто не реализует - слишком сложно и муторно, велика вероятность ошибки, поэтому команды, которыми оперирует пользователь "на лету" перекодируются в команды реального процессора, который уже все и выполняет. Ну а теперь вопрос - что можно сделать за счет микрокода? - да все что угодно!!! А пользователю можно с микрокодом работать? - НИЗЗЗЯ!!! Кэш то ведь часто на одном кристалле с процессором выполняют - значит должен быть и микрокод, работающий с кэшем... Ну а то, что нам показывают - это "эмуляция"... - именно так и появилась "матрица"
Так что, если есть с одной стороны "свой микрокод", а с другой "свой компилятор", который "правильно" разложит в памяти указатели на процессы, то все: ку-ку - любой процесс контролировать проще простого...
Ну и метод борьбы сразу просматривается - сейчас любят "промежуточные языки" (это я попытался термин "Intermediate Language" от микрософт перевести) - в общем это что-то типа "высокоуровневого ассемблера виртуальной машины". Так вот - будем все писать под некую виртуальную машину, но реализацию этой машины сделаем "условно-произвольной" - на каждом отдельно взятом компьютере адреса и организация памяти этой машины будут отличаться - технология та-же, что и у полиморфных вирусов. И все... из области "техники" взламывание такой машины превратится в область "искусства" - то есть иногда будет получаться, а иногда нет... В кэше что то контролировать будет уже почти безполезно, т.к. непонятно, что и зачем там находится... Больше того - существует потенциальная возможность "вирусного" распространения такого типа программного обеспечения, которое будет препятствовать удаленному контролю - это второй конец все той же палки... Процессорам ведь все равно что исполнять.
P.S.: на последок - наши мозги и мысли вероятно контролируются ничуть не хуже чем мы сами можем контролировать процессы в компьютерах... - подобие однако... Поэтому "резкой смены мира" из за чьих то "не в меру шаловливых программистских пальчиков" скорее всего не произойдет - перехватят и не дадут. (в конце стоит жирная точка)
Да, все так. Я и говорю- в каждом такте работают более десятка устройсв.
Одни аппаратные, другие микропрограмные и третьи- чисто програмные.
Нам доступны только програмные, но и микропрограмные пользуют для работы обычные регистры, которые должны соединятся с програмной частью для передачи информации. А значит до них можно достучаться.
Если нет информации как- смотри аналоги. По АРМ инфы больше- там тоже есть
микропрограмный сопроцессор управления- с своими регистрами. И доступ к ним возможен.
А кроме того есть технология Житаг. В сложных системах без нее никак в процессе производства. Интел молчит про свой житаг, но он там должен быть.
А значит в принципе доступно может быть все, в том числе и микропрограммы.
Кстати микропрограммы прошиваются, иногда интел выпускает патчи к своим процам,
они забиваются в биосе. Биос при включении всегда проверяет пропатчен проц или нет. Так что концы всегда можно найти.
DevilR Пост: 474501 От 08.Jul.2015 (10:43)
Ключевое слово register всего лишь говорит компилятору, чтобы он хранил данную переменную в регистре, а не в памяти или стеке.
Это от полного непонимания значения самого слова регистр. В проце много всяких регистров. Есть и такие которые хранят переменную, а в основном там УПРАВЛЯЮЩИЕ регистры. Которые управляют самим процем. Много слов было сказано про пространство памяти задачи- а физически память одна и пространство одно. Просто есть регистр, в котором всего лишь один битик решает- этот код ядра, а этот код юзера. И соответственно проц что то может делать а что то нет.
Но когда задачи переключаются от ядра к юзеру- надо где то сохранять статус задачи, именно этот битик и сохраняеттся он в стэке, а стэк доступен юзеру. иначе он не смог бы возвратить управление ядру.
Есть разные фокусы по отгрызанию стэка- когда из него выгрызается слово состояния и меняется на состояние с большими правами- а дальше само ядро записывает это слово в регистр управления.
Вот таким образом юзер, не имеющий доступа к регистру управления, может поменять там битик на нужный.
DevilR Пост: 479093 От 27.Sep.2015 (19:10)
Дед, ну так ты, если ссылаешься на Юрова, то и название учебника бы дал.
Так и придется открыть страшную тайну несчастным, забаненным в гугле
IergeS Пост: 471981 От 06.Jun.2015 (20:44)
А как пласты создавались тоже интересно
Кончно интересно. Тем более что многие уже и не помнят.
С самых азов. В компе есть не только обычная память, которую контролируют менеджеры памяти, ядро и его защиты, но есть и другие модули памяти, про которые операционка и не догадывается.
Например видеопамять. Логически она совсем в другом пространстве.
Но это же обычные микросхемы памяти и процессор имеет к ним доступ.
А значит может хранить там не только данные ,но и код, и исполнять его.
Линух про него не знает, а компилятор обязан знать.
Вот задачка - написать простенькую прожку для исполнения в видеопамяти.
Есть еще кэш память- линукс про нее тоже не знает.
А там хранится все, в том числе и стек, где всего в одном битике определены
права задачи- либо это юзер, либо ядро , замени это битик- и делай что хочешь,
не вылазя из процессора, не обращаясь к системным функциям и не тревожа системы защиты оси. Ось вообще ничего не будет видеть.
Защищенный режим- это для домохозяек.
неспроста интел все время вводит новые механизмы аппаратной защиты в процы.
Но и они снимаются- иначе бы и не было никаких вирусов.
Как снимаются? Так же как и ставятся- это всегда всего лишь один битик в нужном месте.
Для интереса сделай себе сниффер- второй комп с двумя слушающими сетевухами-
наверняка увидишь трафик, который средствами ядра вообще не виден.
С ним и гипервизор вписать в загрузку не проблема.
И без гипервизора он работает.
Читай про ассемблер. Про опкоды.
Вот для примера- как думаешь- что можно сделать с помошью переопределения размера операнда? [ссылка]
Это просто пример, что не все контролирует ось, и тем более менеджер памяти,
когда есть прямой доступ к памяти.
А у сетевухи он есть. И используется например для сетевой загрузки клиента.
Там свой процик. И у главного процика тоже такой же доступ есть.
Домохозяйкам его не дают, но это не значит что никому не дают.
Просить надо уметь.