Вы не можете напрямую вызывать функции в других процессах, потому что ваш процесс и другой процесс имеют разные адресные пространства. Один из способов обойти это - создать в процессе удаленный поток (используя CreateRemoteThread или RtlCreateUserThread), но это позволяет передать только один параметр функции. Вы можете попробовать создать удаленный поток, записать параметры в его стек и изменить его регистры, используя SetThreadContext. Другой способ - добавить собственную DLL, которая вызывает функцию.
Другая проблема связана с поиском функции для вызова. Возможно, вам понадобится загрузить символы для EXE или DLL, где нужная функция не экспортируется.
По общим вопросам, связанным с внутренними компонентами Windows, попробуйте задать вопрос на Форумы Sysinternals .
РЕДАКТИРОВАТЬ: то, что вы указали (читая строку, которую процесс проверяет на ввод пользователя), очень трудно сделать в программе, не зная заранее расположение инструкций и данных в файле изображения. Если, например, у вас есть программа crackme, вы должны либо использовать инструмент статического анализа, такой как IDA Pro, либо запустить программу под отладчиком. В любом случае, эти вещи обычно требуют участия человека, и их трудно сделать автоматически.