首页
社区
课程
招聘
[已解决]学习代码远程注入的时候遇到问题了
发表于: 2008-8-25 11:57 6914

[已解决]学习代码远程注入的时候遇到问题了

2008-8-25 11:57
6914
看Windows编程循序渐进看到19章了,(我跳着看的 )!
真的很过瘾,也觉得颇有收获,就想在把以前没有搞定的程序重新拿出来试试,无奈又碰到问题了,故发出来望大家指教!
在书里说的是模块注入,是把DLL注入的别的进程中!我以前写的程序,是把函数注入的别的进程里!感觉差不多的哦!
我的代码是这样写的:
void CCallTestPlgDlg::InjectToProcess(DWORD (*FunName)())
{
	HANDLE TmpHandle;
	DWORD dwThreadId;
	DWORD dwProcessId;

	CString sClassName= "";

	m_hPwnd = ::FindWindow("TForm1","游戏找CALL练习实例one");//得到窗口句柄

	if(m_hPwnd == NULL)
	{
		MessageBox("没有找到主程序,请先运行主程序");
	}

	int hFunc=GetClassName(m_hPwnd,sClassName.GetBuffer(0),2000);
	if(hFunc != 0 && 0 <= sClassName.Find("TForm1"))
	{
		if( dwThreadId = ::GetWindowThreadProcessId(m_hPwnd, &dwProcessId))
		{
				m_hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,
											FALSE, dwProcessId);
				if(m_hProcess != NULL)  
				{
					//在目标进程建立内存空间 
					LPVOID ThreadAdd  = ::VirtualAllocEx(m_hProcess, NULL,0x1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
					::WriteProcessMemory(m_hProcess,ThreadAdd ,FunName,0x1024,NULL); 
					TmpHandle = CreateRemoteThread(m_hProcess, 
												NULL, 0, (LPTHREAD_START_ROUTINE)ThreadAdd, NULL, 
												CREATE_SUSPENDED, NULL);//获得注入后过程的句柄ID 
					 
					if(WaitForSingleObject(TmpHandle,INFINITE) != WAIT_OBJECT_0)//[COLOR="Red"]就在这里死了!程序失去响应![/COLOR]
					{
						CString StrTmp;
						StrTmp.Format("%d",GetLastError());
						MessageBox(StrTmp);
					}
					CloseHandle(TmpHandle);
					CloseHandle(m_hProcess);
					VirtualFreeEx(m_hProcess,ThreadAdd,0x1024,MEM_RELEASE);
				}
		}
	}

}

DWORD tmpHP()
{
	_asm{
		pushad
		mov eax,4549992
		mov eax,[eax]
		mov edx,4534336
		mov ebx,4533912
		call ebx
		popad
		ret
	}
	return 0;
}

void CCallTestPlgDlg::OnHp() 
{
	InjectToProcess(tmpHP);
}




问题出在哪里了?
我把我写的程序,还有那个测试程序都发出来以方便大家帮我找问题!

在此谢过

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
::WriteProcessMemory(m_hProcess,ThreadAdd ,FunName,sizeof(DWORD),NULL);
这句有问题吧,FunName这个函数就四字节?
2008-8-25 16:39
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
应该不是这个问题吧,我已经把这个错误改了,大小改成0X1024也不可以,我的函数远没有0x1024这么大~
2008-8-25 17:05
0
雪    币: 321
活跃值: (275)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
4
CREATE_SUSPENDED的问题,改成0
2008-8-25 17:16
0
雪    币: 182
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼上正解CREATE_SUSPENDED会使线程挂起!!!
2008-8-25 17:37
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
还是combjiang大哥牛!
一句话把我点醒了!
膜拜一下~
2008-8-25 19:13
0
雪    币: 7357
活跃值: (3878)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
7
LZ抄书抄错了
2008-8-25 20:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
一眼就看见 你都挂起线程咋还能有响应呢
2008-8-28 23:38
0
雪    币: 142
活跃值: (191)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
恢复下线程也能用的
2008-8-30 12:10
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你这CALL是怎么写的,讲下.
2008-8-30 14:03
0
游客
登录 | 注册 方可回帖
返回