Пример #1
0
        public void ProcessesTestTarget()
        {
            var target     = GetTarget("String");
            var obfuscator = new SuppressIldasm();

            Assert.IsTrue(obfuscator.Process(target));
            target.Write("string-suppressildasm.exe");
        }
Пример #2
0
        public void SuppressesIldasm()
        {
            string       toolPath = "Tools//ildasm//";
            const string tempPath = "SuppressesIldasm.exe";

            // if the resource file is missing, ildasm will fail silently
            if (!File.Exists(toolPath + "ildasm.exe") || !File.Exists(toolPath + "ILDasmrc.dll"))
            {
                Assert.Fail("Test requires ildasm tool");
            }
            toolPath += "ildasm.exe";

            Process toolProcess = null;

            try
            {
                // process the test target first and write the resulting assembly
                var target     = GetTarget("String");
                var obfuscator = new SuppressIldasm();
                Assert.IsTrue(obfuscator.Process(target));
                target.Write(tempPath);

                // start the tool
                toolProcess = new Process
                {
                    StartInfo = new ProcessStartInfo(toolPath)
                    {
                        Arguments             = "/TEXT " + tempPath,
                        UseShellExecute       = false,
                        CreateNoWindow        = true,
                        RedirectStandardError = true
                    }
                };
                toolProcess.Start();
                if (!toolProcess.WaitForExit(10000))
                {
                    Assert.Fail("Tool process didn't exit in 10 seconds");
                }

                // test if ildasm correctly refused to process the assembly
                var error = toolProcess.StandardError.ReadToEnd();
                Assert.IsNotNullOrEmpty(error);
                Assert.AreEqual("Protected module -- cannot disassemble\r\n", error);
            }
            finally
            {
                if (File.Exists(tempPath))
                {
                    File.Delete(tempPath);
                }

                if (toolProcess != null && !toolProcess.HasExited)
                {
                    toolProcess.Kill();
                }
            }
        }