Сейчас на форуме: Kybyx (+3 невидимых) |
![]() |
eXeL@B —› Оффтоп —› Если очень хочется поговорить об Indy |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 21 . 22 . >> |
Посл.ответ | Сообщение |
|
Создано: 12 января 2019 10:16 · Личное сообщение · #1 Если вас направили в эту тему в оффтопе, то это значит, что вы участвуете в токсичном обсуждении персонажа, известного как Поскольку практически каждая тема на форуме, в которой речь заходит об Инди/Клерке, скатывается в оффтоп, а накал эмоций таков, что участникам очень хочется высказаться, то обычная чистка темы не помогает - появляются всё новые и новые реплики, не относящиеся к исходному вопросу темы. Поэтому в данной теме вы можете продолжить свои дискуссии без риска удаления реплик за оффтоп. Как это работает? Шаг 1. Вы поддались соблазну обсудить личность Инди/Клерка в теме, для этого не предназначенной. Шаг 2. Модератор удалил сообщения всех участников, скатившихся в оффтоп, и дал ссылку на Шаг 3. Вы комментируете в Не забывайте об уважении друг к другу и о ----- EnJoy! ![]() |
|
Создано: 13 января 2020 18:09 · Поправил: Boostyq · Личное сообщение · #2 Забавно что это пасс я попробовала первым, но видимо в другой раскладке В сорсах дичь, коментов нет, написано на эльфийском, вызовов syscall нет, есть какой-то бред с wow64.dll, но вызывать его функции это еще != прямые системные вызовы на wow64 Короче, тебе опять приснилось и ты что-то напутал, трата моего времени ----- В облачке многоточия ![]() |
|
Создано: 13 января 2020 18:11 · Личное сообщение · #3 |
|
Создано: 13 января 2020 18:22 · Поправил: Boostyq · Личное сообщение · #4 Там не о чем курить, часть кода спизжена с wow64 дллкок, весь этот код можно полистать в иде в оригинальных либах и не на чокнутом языке Обработка в wow64 это подготовка стека, подготовка параметров, переход в 64-битный режим, вызов оригинального системного вызова, возвращение в 32-бита, конвертация параметров для 32-битной системы, а у тебя просто какой-то мусор ----- В облачке многоточия ![]() |
|
Создано: 13 января 2020 18:27 · Личное сообщение · #5 |
|
Создано: 13 января 2020 18:33 · Личное сообщение · #6 |
|
Создано: 13 января 2020 18:39 · Поправил: difexacaw · Личное сообщение · #7 |
|
Создано: 13 января 2020 18:48 · Личное сообщение · #8 |
|
Создано: 13 января 2020 18:49 · Личное сообщение · #9 |
|
Создано: 13 января 2020 18:57 · Личное сообщение · #10 Alchemistry Нет там никакого замедления, оно только в виде общей обработки в редких ситуациях(сервисы нормально не вызывают с TF). А раз речь зашла про lm, то этот самый механизм turbo и есть оптимизация через классификацию сервисов, точнее через группировку по прототипам. Девчёнка просто не понимает ничего. Даже не смогла найти в дизе элементарную переменную. melt&spectre это асинхронная атака на подобие RC. Шед нт так реализован, что такая атака маловероятна, она расчитана на линукс. Только там такая атака проходит стабильно. ----- vx ![]() |
|
Создано: 13 января 2020 19:09 · Личное сообщение · #11 |
|
Создано: 13 января 2020 19:14 · Личное сообщение · #12 |
|
Создано: 13 января 2020 20:36 · Поправил: Boostyq · Личное сообщение · #13 Alchemistry пишет: Spectre митигейшн А чем куча вызовов с последующей коррекцией стека поможет против этого? Их ровно 32, я бы предположила что эта фигня не должна исполнятся в норме вовсе, или чем-то переписывается, однако странно difexacaw пишет: Даже не смогла найти в дизе элементарную переменную Вот именно, я задала вопрос, ты не смог найти даже простую переменную, начал нести левую инфу, и потом когда я нашла где заполняется эта штука, ты написал "ааа а я думал ты про другое", и начал нудить как же это легко было найти, конечно легко, когда ответ уже написан В общем расстроил ты меня, у тебя на это ушло слишком много времени, вопрос то элементарный, и каждый ядерщик легко бы мне ответил, но люди не хотят мараться заходить в эту тему За то самомнением твоим весь форум загажен, ну правильно, оскарблять других мозгов много не нужно ----- В облачке многоточия ![]() |
|
Создано: 14 января 2020 06:53 · Поправил: Alchemistry · Личное сообщение · #14 Boostyq Это код для branch target injection - манипуляция целевым кешем адресов ветвлений. Это костыльный код. Ты можешь найти его во всех трапах/интераптах, в коде стаба потока KyStartUserThread. Он заполняет буфер возврата из стека (RSB) чтобы при возвратах не было обхода буфера адресов переходов (BTB) в случае если он полон. Перед этим блоком всегда есть проверка KPRCB -> BpbState флажков. Если там установлено что есть поддержка IBRS (https://software.intel.com/security-software-guidance/insights/deep-dive-indirect-branch-restricted-speculation) тогда вместо этого блока юзается интеловский MSR. ![]() |
|
Создано: 14 января 2020 13:29 · Поправил: difexacaw · Личное сообщение · #15 Alchemistry А можно пример например где это в ядре находится ? > Он заполняет буфер возврата из стека (RSB) Что за буфер возврата, нет такого в нт. Есть пара механизмов связанных с теневым стеком, это защита rfg/cfg. Есть контекст(trap-frame). Обработка ловушек всегда прозрачная и проста, любое усложнение приведёт к анстабу. Разве что трудности с обработкой математики, там действительно сам чёрт ноги сломит из этих отложенных квантований ради оптимизации. Гугл мало что знает про это, есть лишь одна ссылка: Code:
Добавлено спустя 11 часов 11 минут Boostyq Всё что я про тебя помню, связано с темой девирта вмп, наверно только потому, что я туже задачу пытался решить. Раз вот полезла в ядерную обработку, то скажи. Мне на васм дали семпл BattleEye, драйвер протекчен вмп и статик анализ врядле возможен, я не имею девирта. Что мне делать и как быть ![]() ----- vx ![]() |
|
Создано: 15 января 2020 01:42 · Поправил: DimitarSerg · Личное сообщение · #16 difexacaw пишет: Мне на васм дали семпл BattleEye, драйвер протекчен вмп и статик анализ врядле возможен, я не имею девирта. Что мне делать и как быть Это решается автоматикой. Визором покрути. difexacaw пишет: Кстати забыл про главное. Хоть десяток вм друг на друга наложи, всё равно останется исходная выборка. Это значит что данные в памяти не зависят от вм. difexacaw пишет: достаточно минуты что бы полистать код по полученным адресам и решить задачу. ----- ds ![]() |
|
Создано: 15 января 2020 02:07 · Личное сообщение · #17 |
|
Создано: 15 января 2020 09:38 · Личное сообщение · #18 difexacaw, Инди! )) Вообще это лучший форум! С давних пор заметил, что хороший метод зайти сюда и протестироваться с бодунища - если осиливаю 2 абзаца, можно садиться дальше за умственную работу. Но слова от тебя - что и сколько надо покурить? Или какие грибы надо жрать? ![]() P.S. Тема про твою хвалёную технологию висит, я создал. Зайди в неё раньше первого тролля. ----- IZ.RU ![]() |
|
Создано: 15 января 2020 15:29 · Поправил: Boostyq · Личное сообщение · #19 Начни с ручного анализа вм, только бегло, чтобы понять смысл и не более, сразу нужно приступать к автоматике, как бы не хотелось поразбирать новые примитивы и т.д. потому что это трата времени, тот же BatllEye выпускает обновы регулярно. При вызове вм на любой версии идет примитив входа, он сохраняет состояние до выполнения вм, его нужно проанализировать в каком порядке сохраняются регистры (они будут загружены уже в самой вм), алгоритм расшировки указателя на ленту, смещение базы, регистры виртуального стека и виртуальных регистров, и т.д. На 2.x есть цикл, для которого тоже нужно писать анализ, чтобы узнать его свойства (роли регистров, таблицу примитивов, алгоритм расшировки номера примитива), на 3.x примитивы хранятся как есть и ссылаются друг на друга по смещению, поэтому анализировать переход нужно каждый раз. Дальше нужно писать анализ примитивов. На 2.х после анализа цикла можно пройтись по таблице и проанализировать каждый из них, на 3.x это нужно делать на лету прямо во время трассировки, собираешь тело примитива, очищаешь от мусора по методу, что обсуждали раньше. Шаблоны примитивов не делай очень строгими, где-нибудь очистка может налажать, а с этой задачей не стоит ковыряться долго, учитывай, что регистры которые там используются могут быть/стать любыми. Теперь пишешь трассировщик вм, он по заданным начальным параметрам будет эмулировать состояние двигаясь по ленте, чтобы собрать статические параметры с которыми вызываются примитивы и сам поток выполнения. Тут появляется проблема условных переходов, чтобы знать обе ветви нужно иметь уже достаточно оптимизированный для анализа примитив, либо есть второй метод вамита, возможно он где-то его описывал. Дальше начинается трансляция примитивов, можно в любой пригодный для оптимизации (и дальнейшей трасляции в x86 если нужно) язык, главное учитывать, что выбор языка будет определять какие свойства и проблемы появятся у промежуточного состояния, потому что нужно будет избавляться от регистров вм и стека вм. Затем нужно писать оптимизации, это достаточно нудный процесс, потому что всегда они должны сохранять исходные свойства и при этом опираться только на доказанные факты. Имей ввиду, что одна инструкция x86 реализуется кучей примитивов, поэтому ничто не мешает вмп смешивать реализации нескольких инструкций в одну большую кашу, единственное чем он ограничен это порядком чтения и записи памяти. Параллельно либо отдельно (в зависимости от языка) идет определение конструкций, которые реализуют инструкции и свертка их в x86. Затем нужно распределить регистры вместо оставшихся регистров вм. Ну это в кратце, может что-то забыла. ----- В облачке многоточия ![]() |
|
Создано: 15 января 2020 15:49 · Поправил: difexacaw · Личное сообщение · #20 Boostyq Как то очень сложно всё, а есчо я как то срёмно смотрю даже на ручную отладку, не говоря уже про ручной реверс вирт машин ![]() Может проще запустить и сдампить, собственно как это и было сделано, было несколько ссылок на реверс этого античита. Вмп обычно покрывает лишь небольшой процент от кода апп, так как не знает EP и данные. ----- vx ![]() |
|
Создано: 15 января 2020 16:01 · Личное сообщение · #21 |
|
Создано: 15 января 2020 16:09 · Личное сообщение · #22 |
|
Создано: 15 января 2020 16:32 · Личное сообщение · #23 difexacaw пишет: ручной реверс вирт машин Это нужно только на начальном этапе, все остальное время втыкаешь в промкод, ну и когда встречаешь новые примитивы. Насчет античитов, большинство людей сейчас работают с ними как с черными коробками, просто пытаются скрыться или сделать что-то опережающее. Было время когда пошла мода на уязвимые драйверы, и все полезли в ядро. Про поиски незащищенных частей не уверена, возможно реально что-то нарыть, но это дает только ограниченное понимание того, что происходит. Например та статья на хабре описывает как перехватили незащищенные функции, которые отправляются с сервера, ну повезло, стоит наложить простое шифрование и положить его под вм, и уже не найти его в сыром виде пока не выполнится. Я же люблю знать наверняка, если есть детект - код который это делает вынь да положь. ----- В облачке многоточия ![]() |
|
Создано: 15 января 2020 16:39 · Личное сообщение · #24 |
|
Создано: 15 января 2020 17:12 · Поправил: difexacaw · Личное сообщение · #25 |
|
Создано: 15 января 2020 19:54 · Личное сообщение · #26 |
|
Создано: 17 января 2020 00:00 · Поправил: difexacaw · Личное сообщение · #27 |
|
Создано: 17 января 2020 03:03 · Личное сообщение · #28 |
|
Создано: 17 января 2020 14:14 · Поправил: Boostyq · Личное сообщение · #29 |
|
Создано: 17 января 2020 22:40 · Личное сообщение · #30 |
|
Создано: 18 января 2020 00:54 · Личное сообщение · #31 Извините, не смог удержаться. Про клерка гитарную педаль сделали ----- 2 оттенка серого ![]() |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 21 . 22 . >> |
![]() |
eXeL@B —› Оффтоп —› Если очень хочется поговорить об Indy |