我制作了一个简单的注入器和一个内置OpenProcess函数的dll。从Visual Studio 2012开始工作,OpenProcess()返回正确的句柄,但是当我用exe注入dll时,OpenProcess()找不到正确的句柄。你能告诉我为什么吗? 编辑:
DWORD WINAPI Function( LPVOID lpParam )
{
pe32.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &pe32) == TRUE)
{
if (Process32Next(snapshot, &pe32) == TRUE)
{
if (_stricmp(pe32.szExeFile, "my.exe") == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
if(!hProcess)
{
MessageBox(NULL,"Error","",0);
}
else {
for(;;)
{
...
}
}}}}}
当我注入dll时,我得到了消息框。 GetLastError返回“拒绝访问”。
答案 0 :(得分:0)
设置OpenProcess()
的dwDesiredAccess
参数。
看看下面的例子:
Taking a Snapshot and Viewing Processes
如果它不起作用,请发布一些代码并尝试以管理员身份运行您的流程。