Size: a a a

2020 November 26

m

magras in pro.cxx
Александр Караев
> хукал функцию
конечно, никакого UB
Мне кажется хуки вешают обычно из другого модуля. Во всяком мне не пришло бы в голову хукать свой модуль. Вся идея хуков же в том, чтобы внедрится в чужой код.
источник

DP

Denis Paukaev in pro.cxx
magras
Мне кажется хуки вешают обычно из другого модуля. Во всяком мне не пришло бы в голову хукать свой модуль. Вся идея хуков же в том, чтобы внедрится в чужой код.
если пишешь защиту то вполне используется и такое )
источник

m

magras in pro.cxx
Denis Paukaev
если пишешь защиту то вполне используется и такое )
Если не секрет, зачем?
Я слышал о том, что некоторые системы внедряют свои модули во все процессы, но это тоже чужой код.
источник

DP

Denis Paukaev in pro.cxx
magras
Если не секрет, зачем?
Я слышал о том, что некоторые системы внедряют свои модули во все процессы, но это тоже чужой код.
например затруднить анализ, в статике хука нет в динамике есть
источник

DP

Denis Paukaev in pro.cxx
но обычно конечно хукают соседние модули в своём процессе, а не свой
источник

PK

Pavel Kazakov in pro.cxx
Denis Paukaev
например затруднить анализ, в статике хука нет в динамике есть
а как антивирусы к таким затруднениям относятся?
источник

DP

Denis Paukaev in pro.cxx
Pavel Kazakov
а как антивирусы к таким затруднениям относятся?
нормально, ему обычно плевать на то что внутри процесса, пока ты не лезешь в чужие
источник

PK

Pavel Kazakov in pro.cxx
мхм, так и думал
источник

m

magras in pro.cxx
Denis Paukaev
например затруднить анализ, в статике хука нет в динамике есть
Да, у меня была мысль про полиморфные вирусы. Наверное так могут делать всякие защиты цифровых прав, вроде starforce?
источник

DP

Denis Paukaev in pro.cxx
magras
Да, у меня была мысль про полиморфные вирусы. Наверное так могут делать всякие защиты цифровых прав, вроде starforce?
почему сразу вирусы, защиты тоже используют подобные техники, иначе бы их слишком просто было снять
источник

DP

Denis Paukaev in pro.cxx
старфорсы всякие вмпротекты и прочее да
источник

S

Salt in pro.cxx
Александр Караев
> хукал функцию
конечно, никакого UB
Пока Майкрософт продают свою библиотеку для хуков - ниченезнаю
источник

АК

Александр Караев... in pro.cxx
magras
Если не секрет, зачем?
Я слышал о том, что некоторые системы внедряют свои модули во все процессы, но это тоже чужой код.
Только вчера увидел - некоторые так мокают :)
https://www.reddit.com/r/cpp/comments/k0atyi/mocxx_a_versatile_c_function_mocking_framework/
источник

m

magras in pro.cxx
Интересно. Кстати они рекомендуют собирать тесты с:
-O0 -g -fno-lto -fno-inline-functions -fno-inline

Мне теперь мерещится, что знакомый рассказывал как подобным образом строил моки для сишного кода.

upd: Или он таким образом получал доступ к непубличным функциям? Помню только то что использовались низкоуровневые хаки для тестирования. =(
источник

АК

Александр Караев... in pro.cxx
magras
Интересно. Кстати они рекомендуют собирать тесты с:
-O0 -g -fno-lto -fno-inline-functions -fno-inline

Мне теперь мерещится, что знакомый рассказывал как подобным образом строил моки для сишного кода.

upd: Или он таким образом получал доступ к непубличным функциям? Помню только то что использовались низкоуровневые хаки для тестирования. =(
Если речь заходит о хуках, то обычно все оптимизации отключаются. Да и вообще, про стандарт можно забыть при использовании таких библиотек
источник

m

magras in pro.cxx
Александр Караев
Если речь заходит о хуках, то обычно все оптимизации отключаются. Да и вообще, про стандарт можно забыть при использовании таких библиотек
Ну я использовал хуки для того чтобы реализовать аналог valgrind'а для винды под свою задачу. Такое применение хуков мне кажется более каноничным.
источник

m

magras in pro.cxx
Ну и так как вмешательство происходит в чужой код, стандарт вроде нигде не нарушается.
источник
2020 November 27

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Oleksandr
Правильно ли я понимаю что в плюсах нельзя стирать тип функции/метода (не функтора!) через каст к void*?
Это impl def емнип. Позикс гарантирует возможность этого каста, стандарт си/плюсов нет
источник

VS

Vlad Serebrennikov in pro.cxx
Oleksandr
Правильно ли я понимаю что в плюсах нельзя стирать тип функции/метода (не функтора!) через каст к void*?
1) конвертация указателей на объекты в void* входит в стандартные преобразования и (обычно) может применяться неявно (conv.ptr#2)

2) обратное преобразование из void* в указатель на объект требует явного static_cast (expr.static.cast#13)

3) конвертация указателя на функцию в указатель на объект это необязательная фича reinterpret_cast с implementation-defined поведением. гарантируется лишь, что если применить к указателю такое преобразование, а потом обратное, то значение не изменится (expr.reinterpret.cast#8)

4) указатели на нестатические члены класса это вообще не указатели (basic.types#basic.compound-3), и я не нахожу, чтобы стандарт давал возможность конвертировать их в void* или обратно
источник

IZ

Ilia Zviagin in pro.cxx
Vlad Serebrennikov
1) конвертация указателей на объекты в void* входит в стандартные преобразования и (обычно) может применяться неявно (conv.ptr#2)

2) обратное преобразование из void* в указатель на объект требует явного static_cast (expr.static.cast#13)

3) конвертация указателя на функцию в указатель на объект это необязательная фича reinterpret_cast с implementation-defined поведением. гарантируется лишь, что если применить к указателю такое преобразование, а потом обратное, то значение не изменится (expr.reinterpret.cast#8)

4) указатели на нестатические члены класса это вообще не указатели (basic.types#basic.compound-3), и я не нахожу, чтобы стандарт давал возможность конвертировать их в void* или обратно
Все дело в том, что функция не объект... Или не совсем объект
источник