网站大量收购闲置独家精品文档,联系QQ:2885784924

注入程序代码.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
注入程序代码

注入函数核心代码 #include tlhelp32.h #include atlconv.h // //插入进程 BOOL RemoteLoadLibrary(HANDLE hProcess, LPCSTR lplibFileName) {//入口参数 hProcess 进程ID lplibFileName要注入的DLL路径 //返回值 如果是TRUE注入成功 否则失败 PCHAR lpRemoteLibFileName =(PCHAR) VirtualAllocEx(hProcess,NULL,lstrlenA(lplibFileName)+1,MEM_COMMIT,PAGE_READWRITE); //VirtualAllocEx 在指定进程空间分配虚拟空间 //hProcess 申请内存所在的进程句柄 // NULL保留页面的内存地址,设置为NULL自动分配 //lstrlenA(lplibFileName)+1 计算欲分配的内存大小 // MEM_COMMIT 为特定的页面区域分配内存中或磁盘的页面文件中的物理存储 // PAGE_READWRITE 可读写该内存区域 if (lplibFileName==NULL) { return FALSE; } //写入 WriteProcessMemory(hProcess,lpRemoteLibFileName,(void *)lplibFileName,lstrlenA(lplibFileName)+1,NULL); // 使目标进程调用LoadLibrary,加载DLL PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress( GetModuleHandle(_T(Kernel32.dll)), LoadLibraryA); HANDLE hRemoteThread = CreateRemoteThread(hProcess,NULL,0,pfnStartAddr,lpRemoteLibFileName,0,NULL); if (hRemoteThread==NULL) { return FALSE; } //等待LoadLibrary加载完毕 WaitForSingleObject(hRemoteThread,INFINITE); // 获得GetModuleHandle的返回值 DWORD ExitCode; GetExitCodeThread(hRemoteThread,ExitCode); CloseHandle(hRemoteThread); // 释放目标进程中申请的空间 VirtualFreeEx(hProcess,lpRemoteLibFileName,0,MEM_RELEASE); return ExitCode; } void CDLLIjectDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //获取操作系统信息 SYSTEM_INFO sysInfo; GetNativeSystemInfo(sysInfo); //在添加进程前清空列表 mProcListBox.ResetContent(); //进程ID DWORD dwpid = 0; //进程信息结构 PROCESSENTRY32 pe32 = {0}; //初始化进程结构大小 pe32.dwSize = sizeof(pe32); //获取系统中正在运行的进程信息,线程信息 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if (hProcessSnap == INVALID_HANDLE_VALUE); //INVALID_HANDLE_VALUE表示一个无效的值也就是-1 //return ; //遍历进程快照 Process32First(hProcessSnap,pe32); do { //打开进程 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,pe32.th32ProcessID); BOOL isWow64; if (IsWow64Process(hProcess,isWow64)) { TCHAR szBuf[1024] = {0}; if (isWow64||sysInf

文档评论(0)

bh10099 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档