VirtualAllocEx函数总是返回NULL

gfynew 2009-03-18 06:24:37
用VirtualAllocEx函数在别的进程里建立内存空间始终不行,返回的总是NULL,但是看别人的帖子好像都没提到有功能存在这问题,到底怎么回事?就算我按照别人的格式试用还是不行。(获取目标进程ID没出错)
...全文
426 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfynew 2009-03-18
  • 打赏
  • 举报
回复
我现在正是在学注入的实现,多谢了。
补充下2楼也指出了我的错误所在,感谢两位。
我是菜鸟,等下可能还有问题,希望能抽空教教小弟。
fishion 2009-03-18
  • 打赏
  • 举报
回复
再不行,你就参考一下别人是怎么做的吧
http://blog.csdn.net/kissyfish/archive/2008/12/07/3462055.aspx
gfynew 2009-03-18
  • 打赏
  • 举报
回复
楼上是对的,换成NULL就行了,至少不会出现返回NULL的问题。
可以试验下一步了,多谢
fishion 2009-03-18
  • 打赏
  • 举报
回复
当你的地址的闲置空间不确定时module最好就是用NULL来代替
gfynew 2009-03-18
  • 打赏
  • 举报
回复
还是不行,郁闷死了
fishion 2009-03-18
  • 打赏
  • 举报
回复
VirtualAllocEx(win, module, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
你怎么用的是窗口句柄了,这里用的是进程句柄
hxzmm 2009-03-18
  • 打赏
  • 举报
回复
funAddress=VirtualAllocEx(win, module, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
应该是funAddress=VirtualAllocEx(h, module, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
第一个参数应该是进程的句柄,你传一个窗口的句柄当然肯定出错!
gfynew 2009-03-18
  • 打赏
  • 举报
回复
一下为处理消息的代码,也就是问题代码,请高手指出哪里出错,小弟感激不尽,是在不想卡死在这里

HWND win=NULL;
HANDLE h=NULL;
DWORD processId;
DWORD readcount=0;
LPVOID funAddress
win=WindowFromPoint(point);
GetWindowThreadProcessId(win,&processId);
h=OpenProcess(PROCESS_ALL_ACCESS,FALSE,processId);
if(h)
{
win=FindWindow("TForm1","找CALL练习实例one");
if(win==NULL)
{
MessageBox(hWnd,"取得窗口句柄失败","Error",0);//运行至次没跳出提示框
//获取窗口句柄没错
return 0;
}
funAddress=VirtualAllocEx(win, module, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if(funAddress==NULL)
{
MessageBox(hWnd,"建立内存错误","Error",0);//始终判断为空
}
}
else
{
MessageBox(hWnd,"打开进程错误","Message",0);

}
CloseHandle(h);
__asm{
}
EndPaint(hWnd,&PtStr);
ReleaseCapture();
break;
default: //其他消息处理程序
return(DefWindowProc(hWnd,iMessage,wParam,lParam)) ;
hxzmm 2009-03-18
  • 打赏
  • 举报
回复
具体代码贴出来!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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