2013-05-14 9 views
1

Есть ли способ определить, какой процесс вызвал функцию Win32. На самом деле мне нужно подключить несколько функций, и, кроме того, мне также необходимо определить, какой процесс вызвал эту функцию. Я выполнял функции подключения, такие как FindNextFile() и функции winsock send() и с использованием MS Detours, но проблема связана с более поздней частью, то есть с определением процесса вызова. Незлая помощь.Определить процесс вызова функции Win32

+3

Если вы уже подключены, например. send(), вы должны установить обработчик крючка с именем send_handler() или аналогичную вещь, в send_handler() вы можете вызвать GetModuleFileName(), чтобы получить имя исполняемого изображения, или GetCurrentProcessId(), чтобы получить PID хост-процесса. Я сомневаюсь, действительно ли это то, о чем вы просите здесь. – xwlan

+0

Ну, если я могу вызвать 'GetCurrentProcessId()', который дает мне идентификатор процесса, тогда я также могу получить имя ProcessName. Это точно решает мою проблему. Но не могли бы вы подробнее рассказать о обработчике крюка, то есть 'send_handler()' и как его использовать. – Faheem

+0

Я помню, как объединил корабли с большим количеством образцов, есть образец, который демонстрирует, как подключить winsock, вы можете просто добавить GetCurrentProcessId() в send_handler() (объединители могут иметь другое имя для обработчика). – xwlan

ответ

2

Ваш крючок будет работать в контексте вызывающего процесса, поэтому он может просто вызвать GetCurrentProcessId или аналогичную функцию, которая возвращает то, что вам нужно знать о процессе.

+0

Да offcourse Адриан !! Я получил эту идею после дальнейших исследований. На самом деле, мое полное решение заключается в том, что я хочу знать, когда процесс вызывает 'FindNextFile()'. Это может произойти посредством: (i) «Настройка крючка с системой» ИЛИ (ii) «Подключение всех запущенных процессов». Так вы могли бы сказать мне, какой из них лучше/проще и как узнать процесс вызова в этом контексте. – Faheem

+0

@Faheem: Я не понимаю ваш последующий вопрос, возможно, потому, что я никогда не работал с Detours. Вы должны посмотреть, как ваш новый вопрос был адресован в Stack Overflow. Если нет, задайте новый вопрос. –

Смежные вопросы