概述
CreateRemoteThread远程调用成功,但是程序退出,是什么原因?
- 出现的问题
- 解决办法
出现的问题
我在进行一次远程注的时候,通过CreateRemoteThread,调用有参函数,之前一直使用的是debug 模式,一直效果上看调用成功了,但是,程序会被强制退出。
代码片段
PID = GetPid(L"植物大战僵尸中文版");
HANDLE hpro;
hpro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
_putPlant pp;
pp.U_ID = 20;
pp.U_X = 0;
pp.U_Y = 2;
//申请空间
ThreadAdd = VirtualAllocEx(hpro, NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
//写入函数
WriteProcessMemory(hpro, ThreadAdd, PuthLants, 4096, NULL);
//参数申请空间
//装载函数需要的参数空间
ParamAdd = VirtualAllocEx(hpro, NULL, sizeof(_putPlant), MEM_COMMIT, PAGE_READWRITE);
//写入函数参数
WriteProcessMemory(hpro, ParamAdd,&pp, sizeof(_putPlant), NULL);
//创建远程线程
hThread = CreateRemoteThread(hpro, NULL, NULL, (LPTHREAD_START_ROUTINE)ThreadAdd, ParamAdd, NULL, NULL);
//等待线程结束 释放资源
WaitForSingleObject(hThread, 5000);
//释放目标资源
VirtualFreeEx(hpro, ThreadAdd, 0, MEM_RELEASE);
VirtualFreeEx(hpro, ParamAdd, 0, MEM_RELEASE);
CloseHandle(hpro);
解决办法
我们只需要将debug模式,换成release 模式就行了,debug 会产生对于的堆栈代码,会让程序报错强制退出。
最后
以上就是光亮舞蹈为你收集整理的CreateRemoteThread 调用成功,但程序退出原因的全部内容,希望文章能够帮你解决CreateRemoteThread 调用成功,但程序退出原因所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复