Обсуждение:Перехват (программирование)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Переименовать[править код]

Эту страницу предлагается переименовать в Перехват (программирование). Соответственно чуть-чуть дополнив.--1101001 23:46, 25 июля 2010 (UTC)[ответить]

Согласен с Вашим предложением --Guranvir 15:04, 26 июля 2010 (UTC)[ответить]

Классическая ошибка с hook[править код]

По-моему тут сделана классическая ошибка — вызывается CallNextHookEx(hook, nCode, wParam, lParam). Однако хук вызывается в чужом адресном пространстве, куда подгружается наша dll'ка. Как следствие, RegisterHook в этом процессе не вызывается и переменная hook равняется нулю, а во все не идентификатору хука. Начиная с Windows 2000 в виду чрезвычайной распространенности этой ошибки в CallNextHookEx можно передавать первым параметром ноль. Соответственно, если в Win 98/ME есть .NET, то нужно переписать код на правильный — передачу идентификатора хука через файлы отображаемые в память, а если нет, то заменить на CallNextHookEx(0, nCode, wParam, lParam). halyavin 06:14, 2 августа 2010 (UTC) Спасибо поправлю--Guranvir 09:46, 3 августа 2010 (UTC)[ответить]

Перехват в linux[править код]

Думаю стоит написать и о программах *trace для перехвата системных вызовов, работающих в unix-like системах. Это добавит нейтральности в статью. halyavin 07:27, 17 августа 2010 (UTC) Спасибо что напомнили о ней, а то я забыл что не написал, но только тогда правильней написать наверно так: в unix-like системах предусмотрен системный вызов ptrace, который позволяет проводить отладку процессов и системных вызовов. --Guranvir 10:31, 17 августа 2010 (UTC) Дополнил--Guranvir 11:06, 17 августа 2010 (UTC)[ответить]

Особенности технологии сплайсинга[править код]

1) Какая связь между "нахождением нужной функции" через вызов GetProcAddress и "встроенным дизассемблерным движком"? 2) Каким чудом технология "позволяет осуществлять глобальный перехват API функций", если все изменения останутся в пределах адресного пространства модифицируемого процесса? А если бы эти изменения даже отобразились глобально, у нас бы получилось что в начале измененной функции стоит jmp ведущий в никуда (потому что нужный код опять-же висит в конкретном адресном пространстве, а не глобально). Нет, при желании можно внедриться в каждый процесс, но тут уже одним сплайсингом не обойдешься. Я, конечно, дико извиняюсь, но раздел напоминает "слышал звон, да не знает где он". Zero Children (обс.) 20:25, 7 января 2017 (UTC)[ответить]