Обнаружение доступа к памяти процесса - PullRequest
8 голосов
/ 30 декабря 2011

Я пытаюсь проверить, пытается ли приложение манипулировать определенным процессом (например, подключается к нему).Я не мог найти правильный подход для достижения этой цели.Возможно ли вычисление контрольной суммы по запущенному процессу?Если это не так, как я могу обнаружить эту ситуацию?

1 Ответ

4 голосов
/ 30 декабря 2011

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

Вы можете проверить, что не так с вашим файлом PE на диске и в памяти , когда произошла инъекция DLL во время запуска, тогда ваш файл PE после копирования в память из файла должен быть поврежден, после последнего Библиотека DLL, у вас должны быть перезаписаны символы отладки с дополнительным импортом DLL. Это изменение может быть сделано для файла так же, как в памяти.

Лучший способ, но, вероятно, вам будет нелегко, когда вы используете язык C #, это запутать ваш код . Я думаю, что это хороший метод, потому что вы не перехватываете то, что не знаете, как работает , потому что вы не знаете, какой хук вы должны делать и где. Но для хорошего запутанного кода C # вы должны найти хорошее программное обеспечение для этого и, вероятно, заплатить не низкую цену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...