Pull to refresh
67
0
Aleksey R. @kITerE

system programming

Send message

Теперь понятно, спасибо

Хм… именно для этого случая я примера в статье не увидел.
Я понял это не как слово-паразит, а как некоторый чек-поинт в объяснениях. Место в речи объясняющего, где спрашивается все ли понятно другому человеку и дается возможность задать уточняющий вопрос.

Кстати, в разговорном английском можно услышать фразу «you see» при объяснении чего-то, сродни нашему «понимаешь?».

А выражение "вот видишь" (при объяснении чего либо) не будет ли более точным аналогом?

Возможно это станет толчком к развитию альтернативных клиентов, ведь насколько я понял "закреплен наверху списка контактов/чатов и его нельзя удалить" реализует именно клиент.

Гражданам с низком социальным кредитом будет запрещено отправлять своих детей в дорогие частные школы

Как я понял: речь не идет про большинство, а скорее наоборот. Речь идет о тех людях, которые целенаправленно откладывают значительные суммы денег на образование детей. Для них государство ставит дополнительный условие-стимул: будь не просто богатым, но и социально правильным.

P.S. Сам я не разделяю такого тоталитарного подхода к вклиниванию государства в жизнь людей. Но сам принцип мне кажется здравым: не только деньги родителей должны учитываться при выборе кому давать лучшее образование. Думаю это только первый шаг к чему-то большему.
Пользователь через компьютер или ноутбук заходит на сайт example.ru и видит опцию «Войти с помощью телефона».

То есть сайт example.ru определяет, что пользователь может входить только через его мобильное приложение? И через USB-HID устройство войти нельзя или стандарт обязывает принимать любой "Аутентификатор"?

Минутка ПАРАНОЙИ: выполнение действия ниже равносильно открытию порта с уязвимым на получение шелла приложением, так что take care.

Параноикам можно посоветовать bind'ить сокет не на все интерфейсы (0.0.0.0), а на 127.0.0.1

Промахнулся, ответил ниже.

Все эти моменты связаны с синтаксисом отладчика:


Почему после каждого имени драйвера написано 7

Это биты флагов команды отладчика !drvobj


Что такое dx в данном контексте?

Команда отладчика отображения C++ выражения — Display Debugger Object Model Expression


Что значит !Wdf01000?

Восклицательный знак используется как разделитель между именем модуля и именем символа из отладочной информации этого модуля: Symbol Syntax and Symbol Matching

Булевы переменные должны читаться утвердительно.

На мой взгляд, это зависит от гайдлайнов, принятых при кодировании. Мне, например, выражение с двойным отрицанием сильно режет глаз:


constexpr auto noValidation = false;

Для меня было бы привычней:


    {
        constexpr auto validation = false;
        process(validation);
    }

    {
        constexpr auto validation = true;
        process(validation);
    }

Кажется мне, что читабельности это не добавляет.

Часто это избавляет от перехода h-файлу (для того что бы увидеть прототип функции).

К сожалению, часто такие функции из сторонних библиотек. И наряду с подходом добавления комментариев


process(/*withValidation=*/ false, /*withNewEngine=*/ true);

Существует подход именованных локальных переменных:


constexpr auto withValidation = false;
constexpr auto withNewEngine = false;
process(withValidation, withNewEngine);

А в чем соль использования в этом месте rvalue reference? Почему не const auto &?

for (auto&& [key, value] : map)

Опечатка или какая-то фича, неподдерживаемая 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```

Baikal Electronics -> Вопросы и ответы


Может ли частное лицо заказать продукты «Байкал Электроникс»?
В настоящий момент нет.

К сожалению

Я вот с этим не понимаю. NtQueueApcThread c вызовом чего угодно кроме RtlDispatchAPC не имеет смысла (ну, возможно, есть еще 1-2 функции — в общем, передавать надо не адрес а ID функции вызываемой)

Уверен, что функцией 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/):


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

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
12 ...
13

Information

Rating
Does not participate
Registered
Activity