Exemple #1
0
        public DispatcherTestBase(MockModuleFixture moduleFixture)
        {
            ModuleFixture = moduleFixture;
            const bool is32Bit = false;

            var dummyModule = moduleFixture.GetModule();
            var dummyMethod = new MethodDefinition(
                "MockMethod",
                MethodAttributes.Static,
                MethodSignature.CreateStatic(dummyModule.CorLibTypeFactory.Void));

            dummyMethod.CilMethodBody = new CilMethodBody(dummyMethod);

            var environment = new MockCilRuntimeEnvironment(dummyModule, is32Bit)
            {
                Architecture = new CilArchitecture(dummyMethod.CilMethodBody),
            };

            var methodInvoker = new ReturnUnknownMethodInvoker(environment.ValueFactory);

            environment.MethodInvoker = new HookedMethodInvoker(methodInvoker);

            var container = new ServiceContainer();

            container.AddService(typeof(ICilRuntimeEnvironment), environment);

            Dispatcher       = new CilDispatcher();
            ExecutionContext = new CilExecutionContext(
                container,
                new CilProgramState(environment.ValueFactory),
                default);
        }
Exemple #2
0
        public void GetValueOfStaticObjectFieldOnFreshEnvironmentShouldContainIntegerValue()
        {
            var field = (FieldDefinition)_moduleFixture.MockModule.LookupMember(typeof(SimpleClass)
                                                                                .GetField(nameof(SimpleClass.StaticObjectField))
                                                                                .MetadataToken);

            var environment = new MockCilRuntimeEnvironment(_moduleFixture.MockModule, false);
            var staticField = environment.StaticFieldFactory.Get(field);

            Assert.IsAssignableFrom <ObjectReference>(staticField.Value);
        }