예제 #1
0
        public void decompileMainModule()
        {
            string sourceCodeFile = DI.config.TempFileNameInTempDirectory + ".cs";
            string testExe = new CreateTestExe().createBasicHelloWorldExe().save();

            Assert.IsTrue(File.Exists(testExe), "Test script was not created");
            string sourceCode = new CecilDecompiler().getSourceCode(testExe);

            Assert.IsNotEmpty(sourceCode, "main module source code was empty");
            Files.WriteFileContent(sourceCodeFile, sourceCode);
            Assert.IsTrue(File.Exists(sourceCodeFile), "Source code was not created");
        }
예제 #2
0
        public void injectHooksTest()
        {
            String sHooksDll = DngConfig.copyCurrentDllToTempFolder();
            Assert.IsTrue("" != CecilUtils.getAttributeValueFromAssembly(sHooksDll, "AroundBody", 0).ToString(),
                          "Finding AroundBody");
            String sNewParameterValue = "*AAAAA*";
            Assert.IsTrue(CecilUtils.setAttributeValueFromAssembly(sHooksDll, "AroundBody", 0, sNewParameterValue),
                          "setting attribute");
            Assert.IsTrue(
                sNewParameterValue == CecilUtils.getAttributeValueFromAssembly(sHooksDll, "AroundBody", 0).ToString(),
                "Checking for persistance of changed data");

            var sTargetAssembly = new CreateTestExe().createBasicHelloWorldExe().save();
            //SpringExec.createTypeAndInvokeMethod(typeof (CreateTestExesTest), "createBasicHelloWorldExe");

            String sHookInjectionResult = DngUtils.injectHooks(sTargetAssembly, "*", "*");
            String sProcessExecutionResult = Processes.startProcessAsConsoleApplicationAndReturnConsoleOutput(sTargetAssembly, "");


            //Assert.IsTrue(File.Exists(sTargetAssembly), "New Assembly Does not exist: {0}", sTargetAssembly);
            DI.log.info("Test Completed");
        }
예제 #3
0
        public void createHelloWorld()
        {
            string testFile = new CreateTestExe().createBasicHelloWorldExe(true).save();
            Assert.IsTrue(File.Exists(testFile), "File was not created");
            List<MethodDefinition> typeDefinitions = CecilUtils.getMethods(testFile);
            Assert.IsTrue(typeDefinitions.Count > 0, "no typeDefinitions in file created");
            List<string> modules = StringsAndLists.getStringListFromList(CecilUtils.getModules(testFile));
            List<string> types = StringsAndLists.getStringListFromList(CecilUtils.getMethods(testFile));
            List<string> methods = StringsAndLists.getStringListFromList(CecilUtils.getTypes(testFile));
            Assert.IsTrue(modules.Count > 0, "no modules in file created");
            Assert.IsTrue(types.Count > 0, "no types in file created");
            Assert.IsTrue(methods.Count > 0, "no methods in file created");
            Assert.IsTrue(modules[0].IndexOf("main") > 0, "main module");
            Assert.IsTrue(types[0] == "System.Void BasicTest.Program::Main()", "Main Type");
            Assert.IsTrue(methods[0] == "<Module>", "Module Method");
            Assert.IsTrue(methods[1] == "BasicTest.Program", "Program Method");

            List<string> methodsCalled = StringsAndLists.getStringListFromList(CecilUtils.getMethodsCalledInsideAssembly(testFile));
            Assert.IsTrue(methodsCalled.Count > 0, "no methodsCalled");
            Assert.IsTrue(methodsCalled[0] == "System.Void System.Console::WriteLine(System.String)", "WriteLine #1");
            Assert.IsTrue(methodsCalled[1] == "System.Void System.Console::WriteLine(System.String)", "WriteLine #2");
            Assert.IsTrue(methodsCalled[2] == "System.String System.Console::ReadLine()", "ReadLine #1");
        }
예제 #4
0
 public void createBasicHelloWorldExeTest()
 {
     var sResponse = new CreateTestExe().createBasicHelloWorldExe().save();
     Assert.IsTrue(File.Exists(sResponse), "File Does not exist: {0}", sResponse);
 }