Вы можете узнать, как приложение будет работать, и изменить его статически, используя приложение CorFlags . Чтобы узнать, как будет работать приложение, используйте:
corflags <PathToExe>
Чтобы изменить способ запуска приложения, используйте:
corflags /32bit+ <PathToExe>
Это заставит EXE-файл работать как 32-битный процесс. Информация о том, как должна выполняться сборка, хранится в PE-заголовке. См. Вопрос переполнения стека Как узнать, скомпилирован ли собственный файл DLL как x64 или x86? .
Если вы хотите внедрить код во время выполнения, вам нужно написать .NET профилировщик в C ++ / COM.
См. .NET Internals: Profiling API и Profiling (Справочник по неуправляемому API) для получения дополнительной информации.
Вам нужно будет реализовать обратный вызов JitCompilationStarted и выполнять свою работу там. Если вы в этом направлении, вам придется создать DLL-файл для инъекций как x86, так и x64. Собственные файлы DLL будут загружены CLR , как только будут установлены следующие переменные окружения:
Cor_Enable_Profiling=0x1
COR_PROFILER={CLSID-of-your-native-DLL-file}
Если он установлен правильно, то 64-разрядная версия «увидит» 64-разрядные процессы, а 32-разрядная версия «увидит» 32-разрядные процессы.