//获得进程句柄
HWND hwnd=::FindWindow(NULL,"计算器");
if(!hwnd)
{
AfxMessageBox("请打开计算器");
return;
}
//取得进程句柄和进程ID
DWORD Process,ProcessId;
Process=::GetWindowThreadProcessId(hwnd,&ProcessId);
//利用进程句柄来打开进程
HANDLE hProcess=::OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_READ |PROCESS_VM_OPERATION
| PROCESS_VM_WRITE,false,ProcessId);
CString m_DllName="C:\\Documents and Settings\\User\\桌面\\CreateRemoteThread\\GameHook1\\Debug\\GameHook1.dll";
char* m_Rometstr;
//在计算器进程中为DLL的名字申请内存空间,返回值为申请到的空间基址
m_Rometstr=(char*)::VirtualAllocEx(hProcess,NULL,m_DllName.GetLength()+1,MEM_COMMIT,PAGE_READWRITE);
//写入DLL名字
::WriteProcessMemory(hProcess,m_Rometstr,m_DllName.GetBuffer(0),m_DllName.GetLength()+1,NULL);
LPTHREAD_START_ROUTINE pfn_LoadLib;
HANDLE hThread;
//取得LoadLibraryA的入口地址
pfn_LoadLib=(LPTHREAD_START_ROUTINE)::GetProcAddress(::GetModuleHandle("Kernel32"),"LoadLibraryA");
//建立新线程,并令入口点为LoadLibraryA,附加参数为DLL名字,令DLL启动
hThread=::CreateRemoteThread(hProcess,NULL,NULL,pfn_LoadLib,m_Rometstr,0,NULL);
WaitForSingleObject(hThread,INFINITE);
VirtualFreeEx(hProcess,m_Rometstr,0,MEM_RELEASE);
/////如果进程结束,则关闭进程头和线程头;
WaitForSingleObject( hProcess, INFINITE );
CloseHandle( hProcess );
CloseHandle( hThread );
//VirtualFreeEx(hProcess,m_Rometstr,0,MEM_RELEASE);
DWORD de=::GetLastError();
相关视频
相关阅读 叛乱沙漠风暴有哪些兵种 叛乱沙漠风暴兵种及基础内容介绍0基础如何自学编程王者荣耀中暴击伤害是基础伤害的多少倍开拓者拥王者战斗技巧有什么 开拓者拥王者基础职业评级攻略怪物猎人世界调查据点基础设施介绍 怪物猎人世界有哪些功能设施武侠乂新手攻略 武侠乂最详细的新手基础知识介绍CWW喷属于竞速技巧训练中的基础进阶还是高级 QQ飞车手游每日一题绝地求生刺激战场Vector怎么样 Vector冲锋枪基础属性介绍
热门文章 黑客大战直播网址 黑客
最新文章
黑客大战直播网址 黑客什么是木马,什么是木马
计算机病毒是指什么什么是木马,什么是木马病毒黑客破解密码常用的方法告诉你黑客的Google搜索技巧
人气排行 如何攻击局域网电脑无线网络密码破解教程(破解无线路由WEP加密网站获得系统权限攻击教程流光破解ftp密码教程计算机病毒是指什么黑客破解密码常用的方法如何命令行/DOS下列出进程名与进程文件路径2010黑客工具
查看所有1条评论>>