打造一款個人的遠程協助軟件
回到深圳的這段時間一直宅在家裏搞這個,學習了老狼的教程,照著做了一個,功能差不多都實現了,做這個僅僅是對編程,對安全領域感興趣做做實驗而已。
采用了gh0st開源遠控內核,它是一款基於C/S架構的遠程管理軟件。服務端通過反向連接主控端,連接成功後主控端會提示服務端上線,然後主控端和服務端就能互相傳輸信息了。並可進行終端管理,進程處理,窗口管理,文件管理,遠程桌面,獲取視頻語音等操作,服務端設置了心跳包機制防止意外掉線。
gh0st開源遠控內核原理分析:
主控端傳輸數據使用CIOCPServer類實現。被控端數據傳輸使用CClientSocket類實現,傳輸數據之前使用zlib進行壓縮,減小數據包的大小,
主控端有個回調函數NotifyProc,所有被控端發來的消息都會經過此函數,在該函數中使用switch語句處理各個消息。使得代碼看起來井井有條,方便添加減少功能。
被控端功能管理上使用了一個不錯的方案。先做一個CManager類作為所有管理功能的基類,其他的管理類比如系統管理類CSystenManager繼承CManager,這樣處理起來比較方便,增加了代碼的重用性,大大減少了代碼量;
被控端svchost以系統服務啟動,並用心跳包機制防止意外掉線,具有良好的連接穩定性。
使用問題:
在局域網中,IP號通常是固定的,但在實際情況中,主控端電腦並不都是固定的IP,比如我們在公司使用同一個路由器,IP是內網IP(192.168.x.x
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。再連接。
打造一款個人的遠程協助軟件