首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ CreateRemoteThread访问冲突

C++ CreateRemoteThread访问冲突
EN

Stack Overflow用户
提问于 2015-05-05 18:07:07
回答 1查看 496关注 0票数 3

我有一个关于CreateRemoteThread函数的问题。

我只是建立了一个小的控制台窗口,要求退出一个特定的数字(这样只要我想要,它就会一直打开)。在这个程序里面有一个函数,我算出了它的内存地址。

现在我想用第二个程序通过CreateRemoteThread调用这个函数,但它总是提示存在访问冲突。两者都是以相同的方式编译的。

下面是我的远程调用的代码:

代码语言:javascript
复制
bool SetPrivileges(){
HANDLE pt; //process token
TOKEN_PRIVILEGES ptp; //process token privileges
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &pt))
{
    LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &ptp.Privileges[0].Luid);
    ptp.PrivilegeCount = 1;
    ptp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    if (AdjustTokenPrivileges(pt, false, &ptp, sizeof(ptp), NULL, NULL))
    {
        return true;
    }
}

return false;}

int _tmain(int argc, _TCHAR* argv[])
 {
if (SetPrivileges())
{
    cout << "Enabled custom privileges" << endl;
}
else{
    cout << "Could not enable custom privileges" << endl << GetLastError() << endl;
}

CodeHelper ch;
DWORD processId = ch.GetProcessId("CallMeConsole.exe");
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, false, processId);
DWORD Testaddress = 0x008642D0;
HANDLE thread = CreateRemoteThread(proc, NULL, 0, (LPTHREAD_START_ROUTINE)Testaddress, NULL, 0, NULL);
/*if (thread != 0)
{
    WaitForSingleObject(thread, INFINITE);
    CloseHandle(thread);
    CloseHandle(proc);
    cout << "success!" << endl;
}
else{
    cout << "error" << endl;
}*/
return 0;}

如果我是对的,如果我想注入一些代码,我只需要VirtualAllocEx来保留内存空间。但我只想调用程序的函数。

你们有什么想法吗?

搜索对我真的没什么帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-05-05 19:29:38

对于每个有相同问题的人来说,提供的代码是完全没有问题的。只是我的示例地址出错了。

无论如何,我希望这是一个关于如何执行所选程序的远程函数的半好例子。

感谢每一个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30050027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档