Хм… именно для этого случая я примера в статье не увидел.
Я понял это не как слово-паразит, а как некоторый чек-поинт в объяснениях. Место в речи объясняющего, где спрашивается все ли понятно другому человеку и дается возможность задать уточняющий вопрос.
Возможно это станет толчком к развитию альтернативных клиентов, ведь насколько я понял "закреплен наверху списка контактов/чатов и его нельзя удалить" реализует именно клиент.
Гражданам с низком социальным кредитом будет запрещено отправлять своих детей в дорогие частные школы
Как я понял: речь не идет про большинство, а скорее наоборот. Речь идет о тех людях, которые целенаправленно откладывают значительные суммы денег на образование детей. Для них государство ставит дополнительный условие-стимул: будь не просто богатым, но и социально правильным.
P.S. Сам я не разделяю такого тоталитарного подхода к вклиниванию государства в жизнь людей. Но сам принцип мне кажется здравым: не только деньги родителей должны учитываться при выборе кому давать лучшее образование. Думаю это только первый шаг к чему-то большему.
Пользователь через компьютер или ноутбук заходит на сайт example.ru и видит опцию «Войти с помощью телефона».
То есть сайт example.ru определяет, что пользователь может входить только через его мобильное приложение? И через USB-HID устройство войти нельзя или стандарт обязывает принимать любой "Аутентификатор"?
Восклицательный знак используется как разделитель между именем модуля и именем символа из отладочной информации этого модуля: Symbol Syntax and Symbol Matching
Опечатка или какая-то фича, неподдерживаемая MS'ом? webcompiler.cloudapp.net, 19.12.25715.0 (x86). Last updated: Sep 25, 2017:
Compiled with /std:c++17 /EHsc /nologo /W4
main.cpp
main.cpp(18): error C2440: 'initializing': cannot convert from 'std::pair<const _Kty,_Ty>' to 'std::pair<const _Kty,_Ty> &&'
with
[
_Kty=std::string,
_Ty=std::string
]
main.cpp(18): note: You cannot bind an lvalue to an rvalue reference```
Я вот с этим не понимаю. NtQueueApcThread c вызовом чего угодно кроме RtlDispatchAPC не имеет смысла (ну, возможно, есть еще 1-2 функции — в общем, передавать надо не адрес а ID функции вызываемой)
Уверен, что функцией NtQueueApcThread пользуются не только разработчики MS'а и писатели малвари.
и это и есть патчинг ядра, латающий дыру.
И ломает обратную совместимость.
У ядра нет дыры. Что бы выполнить NtQueueApcThread нужно обладать правом THREAD_SET_CONTEXT для нити целевого процесса. Если вы можете открыть целевую нить с такой маской доступа, то можно выполнить любой код, который загружен в адресное пространство процесса.
На x64, например, первые 4-е параметра передаются в регистрах, поэтому обладая THREAD_SET_CONTEXT можно выполнить тот же самый вызов с тремя параметрами в целевом процессе функцией SetThreadContext.
I started poking around to see how hard it would be for a threat actor to find a new method that security vendors are unaware of and bypasses most security products.
Суть не в том, что атаку нельзя детектировать, а в том, что контролируемый со стороны Security-продуктов вызов WriteProcessMemory заменили на вызов GlobalAddAtom из своего процесса и вызов GlobalGetAtomName через APC механизм NtQueueApcThread в целевом процессе.
И новая серия вызовов у Security-продуктов пока вызывает меньше подозрений или не вызывает вообще.
Небольшое дополнение: не всегда удобно дампить процесс, но Debug Engine позволяет загружать исполняемые файлы, как дампы. Например:
C:\>kd.exe -z c:\Windows\System32\ole32.dll
Теперь понятно, спасибо
Хм… именно для этого случая я примера в статье не увидел.
Я понял это не как слово-паразит, а как некоторый чек-поинт в объяснениях. Место в речи объясняющего, где спрашивается все ли понятно другому человеку и дается возможность задать уточняющий вопрос.
А выражение "вот видишь" (при объяснении чего либо) не будет ли более точным аналогом?
Возможно это станет толчком к развитию альтернативных клиентов, ведь насколько я понял "закреплен наверху списка контактов/чатов и его нельзя удалить" реализует именно клиент.
Как я понял: речь не идет про большинство, а скорее наоборот. Речь идет о тех людях, которые целенаправленно откладывают значительные суммы денег на образование детей. Для них государство ставит дополнительный условие-стимул: будь не просто богатым, но и социально правильным.
P.S. Сам я не разделяю такого тоталитарного подхода к вклиниванию государства в жизнь людей. Но сам принцип мне кажется здравым: не только деньги родителей должны учитываться при выборе кому давать лучшее образование. Думаю это только первый шаг к чему-то большему.
То есть сайт example.ru определяет, что пользователь может входить только через его мобильное приложение? И через USB-HID устройство войти нельзя или стандарт обязывает принимать любой "Аутентификатор"?
Параноикам можно посоветовать bind'ить сокет не на все интерфейсы (0.0.0.0), а на 127.0.0.1
Промахнулся, ответил ниже.
Все эти моменты связаны с синтаксисом отладчика:
Это биты флагов команды отладчика !drvobj
Команда отладчика отображения C++ выражения — Display Debugger Object Model Expression
Восклицательный знак используется как разделитель между именем модуля и именем символа из отладочной информации этого модуля: Symbol Syntax and Symbol Matching
На мой взгляд, это зависит от гайдлайнов, принятых при кодировании. Мне, например, выражение с двойным отрицанием сильно режет глаз:
Для меня было бы привычней:
Часто это избавляет от перехода h-файлу (для того что бы увидеть прототип функции).
К сожалению, часто такие функции из сторонних библиотек. И наряду с подходом добавления комментариев
Существует подход именованных локальных переменных:
Спасибо за развернутый ответ
А в чем соль использования в этом месте rvalue reference? Почему не const auto &?
Опечатка или какая-то фича, неподдерживаемая MS'ом? webcompiler.cloudapp.net, 19.12.25715.0 (x86). Last updated: Sep 25, 2017:
Baikal Electronics -> Вопросы и ответы
К сожалению
Уверен, что функцией NtQueueApcThread пользуются не только разработчики MS'а и писатели малвари.
И ломает обратную совместимость.
У ядра нет дыры. Что бы выполнить NtQueueApcThread нужно обладать правом THREAD_SET_CONTEXT для нити целевого процесса. Если вы можете открыть целевую нить с такой маской доступа, то можно выполнить любой код, который загружен в адресное пространство процесса.
На x64, например, первые 4-е параметра передаются в регистрах, поэтому обладая THREAD_SET_CONTEXT можно выполнить тот же самый вызов с тремя параметрами в целевом процессе функцией SetThreadContext.
Задача детекта малвари по поведению — задача не ядра, я Security-продуктов. Именно как обход существующих Security-решений и позиционируется новая техника (https://breakingmalware.com/injection-techniques/atombombing-brand-new-code-injection-for-windows/):
Суть не в том, что атаку нельзя детектировать, а в том, что контролируемый со стороны Security-продуктов вызов WriteProcessMemory заменили на вызов GlobalAddAtom из своего процесса и вызов GlobalGetAtomName через APC механизм NtQueueApcThread в целевом процессе.
И новая серия вызовов у Security-продуктов пока вызывает меньше подозрений или не вызывает вообще.
C:\>kd.exe -z c:\Windows\System32\ole32.dll
Microsoft ® Windows Debugger Version 10.0.10586.567 AMD64
Copyright © Microsoft Corporation. All rights reserved.
Loading Dump File [c:\Windows\System32\ole32.dll]
ModLoad: 000007ff`7a5f0000 000007ff`7a7f3000 c:\Windows\System32\ole32.dll
ole32!_DllMainCRTStartup:
000007ff`7a612bd0 48895c2408 mov qword ptr [rsp+8],rbx ss:00000000`00000008=????????????????
0:000> dt ole32!_system_timeofday_information
+0x000 BootTime: _LARGE_INTEGER
+0x008 CurrentTime: _LARGE_INTEGER
+0x010 TimeZoneBias: _LARGE_INTEGER
+0x018 TimeZoneId: Uint4B
+0x01c Reserved: Uint4B
+0x020 BootTimeBias: Uint8B
+0x028 SleepTimeBias: Uint8B