Поскольку вы сказали про anti-debug и anti-hook,то отвечу про него(я понял, что вы подразумевали bp т.к это подходит под хукинг частично):
Во-первых, заденем тему bp в дебаггере т.к без него дебаггер бесполезен.
Обычно используют дебаггеры 2 вида bp:
1)патчинг байтов и
в DEBUG_EVENT.u.Exception.ExceptionRecord.ExceptionCode
2)
(Dr регистры потока).
Итак,вы ,скорее всего, хотите противодействовать им и вот решения, которые я знаю:
1)Для предотвращения обычных bp можете использовать просто CRC. Да, его могут найти и обезвредить, если он 1,
но если их несколько и они считают CRC другой секции(так делает VMProtect,например),то вам придётся обойти их все
(всё можно обойти и не пытайтесь втирать эту мысль 0x1337 раз).
2) Вы можете сломать NtProtectVirtualMemory и заставить его завершаться неудачно.
Для UM решения вы можете использовать SEC_NO_CHANGE(бесполезно, если секция имеет права Write,что логично).
Вам придётся сделать unmap и map кода с использованием этого флага (Zw/NtMapViewOfSection с SEC_NO_CHANGE ).
Не забывайте, что их могут ремапнуть, чтобы удалить этот флаг.
В ядре NtProtectVirtualMemory -> MmProtectVirtualMemory -> MiCheckSecuredVad и заставить вернуть MiComparePteProtections STATUS_INVALID_PAGE_PROTECTION(windows 10)
Так же можно ломать NtWriteVirtualMemory,но я не знаю элегантного способа, который можно порекомендовать.
3)Для противодействия HWBP вы можете просто проверять Dr регистры у потока/обнулять их(NtContinue/NtSetContextThread/NtGetContextThread/KiUserExceptionDispatcher).
В ядре вы можете проверить просто DebugActive PETHREAD->Header.DebugActive(смотрите KiRecordDr7/PspSetContext)
P.S если я вас понял слегка неправильно(например, вы подразумевали хуки anti-anti-debug tool или обход определённых хуков), то напишите, что вы хотели узнать и подразумевали.