Visual C++ 7.1Visual C++ 8.0Windows VistaVisual C++ 7.0Win32Windows 2000Visual C++ 6.0高级Windows XPMFC初学者中级开发WindowsC++
HackPro:关于网络的一切






1.80/5 (6投票s)
HackPro 是一个为系统管理员和软件开发人员开发的实用程序,用于监控、分析和维护他们的网络。
引言
本文介绍了我编写的工具 HackPro。
背景
HackPro 是一个为系统管理员和软件开发人员开发的实用工具,用于监控、分析和维护他们的网络。它包含许多管理员监控和维护网络所需的各种功能。
它基于黑客之前用来监控和攻击网络的概念开发而成。
使用代码
HackPro 具有多种功能,您可以将其代码用于编写。
- DLL 注入器
- 理解 Socket API
- 理解 CSocket 细节。
- 实现原始数据包发送器
- 理解 ARP 过程
这是一个 DLL 注入的示例
void InjectDll(HANDLE hProc) { DWORD dwFuncSize=0; DWORD dwBytesToAlloc=0; LPVOID pRemoteAlloc = NULL; REMOTE_INFO remInfo; HINSTANCE hKernel32=0; CHAR szDllName[MAX_PATH]; DWORD dwBytesWritten; HANDLE hRemoteThread = 0; DWORD dwIgnored; // // Prepare the info to send across // //HANDLE hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); hKernel32 = LoadLibrary ("Kernel32"); remInfo.pLoadLibrary = (pLoadLib_t) GetProcAddress (hKernel32, "LoadLibraryA"); remInfo.pGetProcAddress = (pGetProcAddr_t) GetProcAddress (hKernel32, "GetProcAddress"); remInfo.pFreeLibrary = (pFreeLib_t) GetProcAddress (hKernel32, "FreeLibrary"); strncpy (remInfo.szDllName, DllPath, sizeof (remInfo.szDllName)); strncpy (remInfo.szProcName, "OnLoad", sizeof (remInfo.szProcName)); // // Determine amount of memory to allocate // dwFuncSize = (DWORD)DummyFunc - (DWORD)RemoteFunction; dwBytesToAlloc = dwFuncSize + sizeof (REMOTE_INFO) + 4; // // Allocate memory in remote proc // pRemoteAlloc = VirtualAllocEx (hProc, NULL, dwBytesToAlloc,MEM_COMMIT, PAGE_READWRITE); if (pRemoteAlloc == NULL) { CString str; str.Format("VirtualAllocEx Error code (GetLastError)=%d",GetLastError()); MessageBox(NULL,str,"Error",0); return ; } // // Write data to the proc // if(!WriteProcessMemory (hProc, pRemoteAlloc, &remInfo, sizeof (remInfo),&dwBytesWritten)) { CString str; str.Format("WriteProcessMemory1 Error code (GetLastError)=%d",GetLastError()); MessageBox(NULL,str,"Error",0); goto exit; } // // Write code to the proc // if (!WriteProcessMemory (hProc,(PBYTE)pRemoteAlloc + sizeof (REMOTE_INFO) + 4,(LPVOID)(DWORD)RemoteFunction, dwFuncSize, &dwBytesWritten)) { CString str; str.Format("WriteProcessMemory2 Error code (GetLastError)=%d",GetLastError()); MessageBox(NULL,str,"Error",0); goto exit; } // // Create the remote thread // //hRemoteThread = CreateRemoteThread (hProc, NULL, 0,(LPTHREAD_START_ROUTINE)remInfo.pLoadLibrary,DllPath, 0,&dwIgnored); hRemoteThread = CreateRemoteThread (hProc, NULL, 0,(LPTHREAD_START_ROUTINE)((PBYTE) pRemoteAlloc + sizeof (REMOTE_INFO) + 4),pRemoteAlloc, 0, &dwIgnored); if (!hRemoteThread) { MessageBox(NULL,"CreateRemoteThread Error","Dll Injection Failed",NULL); goto exit; } //WaitForSingleObject (hRemoteThread, INFINITE); exit: if (hRemoteThread) CloseHandle (hRemoteThread); // VirtualFreeEx (hProc, pRemoteAlloc, 0, MEM_RELEASE); return ; }