1. 程式人生 > >打造一款個人的遠程協助軟件

打造一款個人的遠程協助軟件

-1 小數據 pan 視頻 代碼 心跳 解決方法 switch語句 方便

回到深圳的這段時間一直宅在家裏搞這個,學習了老狼的教程,照著做了一個,功能差不多都實現了,做這個僅僅是對編程,對安全領域感興趣做做實驗而已。

技術分享

采用了gh0st開源遠控內核,它是一款基於C/S架構的遠程管理軟件。服務端通過反向連接主控端,連接成功後主控端會提示服務端上線,然後主控端和服務端就能互相傳輸信息了。並可進行終端管理,進程處理,窗口管理,文件管理,遠程桌面,獲取視頻語音等操作,服務端設置了心跳包機制防止意外掉線。

gh0st開源遠控內核原理分析:

主控端傳輸數據使用CIOCPServer類實現。被控端數據傳輸使用CClientSocket類實現,傳輸數據之前使用zlib進行壓縮,減小數據包的大小,

數據傳輸是遠控的核心;

主控端有個回調函數NotifyProc,所有被控端發來的消息都會經過此函數,在該函數中使用switch語句處理各個消息。使得代碼看起來井井有條,方便添加減少功能。

被控端功能管理上使用了一個不錯的方案。先做一個CManager類作為所有管理功能的基類,其他的管理類比如系統管理類CSystenManager繼承CManager,這樣處理起來比較方便,增加了代碼的重用性,大大減少了代碼量;

被控端svchost以系統服務啟動,並用心跳包機制防止意外掉線,具有良好的連接穩定性。

使用問題:

在局域網中,IP號通常是固定的,但在實際情況中,主控端電腦並不都是固定的IP,比如我們在公司使用同一個路由器,IP是內網IP(192.168.x.x

),如果換到咖啡廳上網,IP會變成公網IP。這樣服務端就找不到我的IP的。很多遠控處理這個問題有兩個解決方法:

1.DNS上線

花生殼、3322提供了免費的動態域名服務,也就是DNS服務。把自己的IP綁定到DNS服務器上,被控端通過對DNS的解析,找到主控端的IP連接。下次換地方上網,只需更改一下自己綁定到DNS服務器上的IP即可。

2.FTP(HTTP)上線

我們把自己的IP寫入一個文本文件test.txt,放在ftp(http)服務器上,比如ftp://leavesongs.com/test.txt。被控端去下載該txt,在其中找到主控端的IP。再連接。

打造一款個人的遠程協助軟件