灵异的OpenProcess

BORLANDSUN 2011-02-01 06:17:54
最近在搞安全U盘的事情,今天写了一段DLL注入代码,在本机运行正常,拷到别的机子上时,OpenProcess返回目标进程的句柄,但后继调用不成功.后来发现,居然OpenProcess虽然操作成功,但GetLastError居然返回87(无效参数值).现在把代码贴出来,大家研究研究:

// HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);
if(hProcess == NULL)
{
ShowMessage("失败");
}
else
{
ShowMessage("成功");
ShowMessage(GetLastError()); // 真灵异!!!!!
}

LPVOID pBuffer = VirtualAllocEx(hProcess, NULL, MAX_PATH, MEM_COMMIT, PAGE_READWRITE);
BOOL Ret = WriteProcessMemory(hProcess, pBuffer, (LPVOID)lpszLibName, strlen(DLLPath)+1, NULL);
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA");
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, pfnThreadRtn, pBuffer, 8192, NULL);

WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess, pBuffer, 0, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess);

事实上,后面的几个API返回值都是表明操作成功的,但GetLastError()的值都是87.太怪异了.
我的成功的环境是Win7,失败的环境是XP和2003.我没有更多的电脑做测试了.
这几个电脑上装的都有360.难到那两台电脑上的OpenProcess都被HOOK了?
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BORLANDSUN 2011-08-22
  • 打赏
  • 举报
回复
是的,是我的问题。我少拷了一个DLL所需的库。
YeBinYe 2011-02-04
  • 打赏
  • 举报
回复
与OpenProcess无关

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧