При перехвате WlxLoggedOutSAS использую сплайсинг функции. Этот метод состоит в следующем: определяется адрес перехватываемой функции, и первые 5 байт её начала заменяются на длинный jmp переход по адресу обработчика перехвата. Если необходимо вызывать перехватываемую функцию, то перед заменой необходимо сохранить её начальные байты и перед вызовом восстанавливать их. Недостаток данного метода состоит в том, что если после восстановления начала функции произошло переключение контекста на другой поток приложения, то он сможет вызвать функцию минуя перехватчик. Этот недостаток можно устранить останавливая все побочные потоки приложения перед вызовом и запуская после вызова. Программа написана на VC++6, исходные файлы прилагаются. Вопрос: Программу протестировал на Windows2000(SP4). Оказалось она работает не на всех компьютерах, хотя везде стоит 2000(SP4). При отладки выяснил LoadLibrary(“msgina.dll”) возвращает 0. Может кто подскажет в чем дело, буду очень признателен.
Посмотрел код, непонятно вообще что ты пытаешся сделать, если тебе надо пароли получать, то перехватывай advapi32!SystemFunction007 в lsass.exe