Сейчас большинство разработчиков перешло от использования прямых сисколлов к использованию косвенных вызовов. Как я понимаю на текущий момент нету способов сделать косвенный вызов без палева в коллстеке. Либо надо спуфить коллстек (что понесет за собой ошибки при раскручивании стека EDR), либо будет виден прыжок по адресу возврата обратно по пользовательскую RX память (рис.1). Я подумал, в kernel32/ntdll должны быть коллбэк-апи, через которые теоретически возможно вызвать сисколлы без палева в коллстеке, потому что вызов вернется не в приложение, а в эту n-ную функцию из kernel32/ntdll, что в теории должно добавить легитимности. Как по мне, возврат из сисколла в основной код это 100% детект. Что думаете? Может я чего-то не понимаю? А есть ли смысл ахнукать сисколлы в ntdll?
(рис.1)
(рис.1)