Другой процесс не может сделать хуки в вашем процессе, может изменить память, но чтобы сделать хуки, этот код должен быть в вашем адресном пространстве, это может быть сделано для внедрения DLL в ваш процесс при запуске (во время выполнения inject dll является трудно), вы можете легко проверить это, перечислив DLL-файлы в вашем процессе и выполнив поиск некоторых вызовов функций ReadProcessMemory
, WriteProcessMemory
, OpenProcess
, CallNextHookEx
в их коде. Для этого необходимо получить адрес (GetProcAddress
) функции и значение для поиска в коде (для этого можно добавить некоторые асм call
прогнозы для результата с узким диапазоном).
Вы можете проверить, что не так с вашим файлом PE на диске и в памяти , когда произошла инъекция DLL во время запуска, тогда ваш файл PE после копирования в память из файла должен быть поврежден, после последнего Библиотека DLL, у вас должны быть перезаписаны символы отладки с дополнительным импортом DLL. Это изменение может быть сделано для файла так же, как в памяти.
Лучший способ, но, вероятно, вам будет нелегко, когда вы используете язык C #, это запутать ваш код . Я думаю, что это хороший метод, потому что вы не перехватываете то, что не знаете, как работает , потому что вы не знаете, какой хук вы должны делать и где. Но для хорошего запутанного кода C # вы должны найти хорошее программное обеспечение для этого и, вероятно, заплатить не низкую цену.