VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1070|回复: 12

关于CreateRemoteThread调用无结果

[复制链接]
84_avatar_middle
最佳答案
0 
在线会员 发表于 2022-9-23 09:05:21 来自手机 | 显示全部楼层 |阅读模式
CreateRemoteThread调用后,返回结果一直为0,GetLastError后,返回值为5,百度网上只有一个说是32换64位就行,实际换完之后无法链接,编译不出来,提权操作后依然GetLastError值为5。
求大佬帮忙。




上一篇:windows编程中 想要得到文件大小
下一篇:数据如何以二进制形式保存成文件
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-23 12:09:59 | 显示全部楼层
最起码代码发出来看看啊
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-23 12:47:15 | 显示全部楼层
dwProcessId,是我需要的程序的ID号,已经获得了,没有问题
LPVOID lpRemotePath

hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_CREATE_THREAD|PROCESS_VM_READ|PROCESS_ALL_ACESS,false,dwProcessId);

(LPTSTR)VirtualAllocEx(hProcess,NULL,_tcslen(lpPath)+1)*sizeof(TCHAR),MEM_COMMIT,PAGE_READWRITE)

lpPath是我自定义的路径,也取到值了

             HANDLE hRemoteThread;
                DWORD dwThreadId;

hModule=GetModuleHandle(TEXT("kernel32.dll"));
  
        LoadLibraryA=(lpfnLoadLibraryA)GetProcAddress(hModule,TEXT("LoadLibraryA"));

                hRemoteThread=CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)LoadLibraryA,  (LPVOID)lpRemotePath,0,&dwThreadId);
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-23 12:50:27 | 显示全部楼层
xiao14116 发表于 2022-9-23 12:09
最起码代码发出来看看啊

发你楼下了
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-23 13:08:25 | 显示全部楼层
你没有把lpPath的值写入目标进程空间里
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-23 16:00:20 | 显示全部楼层
xiao14116 发表于 2022-9-23 13:08
你没有把lpPath的值写入目标进程空间里

不好意思,我只是把CreateRemoteThread用到的函数写了,这个我漏了,lpRemotePath=(LPTSTR)VirtualAllocEx(hProcess,NULL,_tcslen(lpPath)+1)*sizeof(TCHAR),MEM_COMMIT,PAGE_READWRITE);
if(lpRemotePath!=NULL){WriteProcessMemory(hProcess,lpRemotePath,lpPath,_tcslen(lpPath)+1)*sizeof(TCHAR),NULL)
然后就是CreateRemoteThread了
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-23 18:26:55 | 显示全部楼层
你用的是ANSI编码还是UNICODE编码?
如果是后者的话用LoadLibraryA的话需要写入的路径也要是窄字节字符
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-23 20:31:44 | 显示全部楼层
本帖最后由 magshines 于 2022-9-23 20:39 编辑
xiao14116 发表于 2022-9-23 18:26
你用的是ANSI编码还是UNICODE编码?
如果是后者的话用LoadLibraryA的话需要写入的路径也要是窄字节字符


typedef HINSTANCE(WINAPI *lpfnLoadLibraryA)(LPCTSTR*);
lpfnLoadLibraryA LoadLibraryA;
应该是从这句话中来的,我修改了半天了,不行。。。求教,怎么处理。。谢谢
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-23 22:02:20 | 显示全部楼层
magshines 发表于 2022-9-23 20:31
typedef HINSTANCE(WINAPI *lpfnLoadLibraryA)(LPCTSTR*);
lpfnLoadLibraryA LoadLibraryA;
应该是 ...

没有必要这么弄
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-23 22:20:39 | 显示全部楼层

不知道什么意思,网上查的这么写的。。。大佬,怎么改啊
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-24 12:31:07 | 显示全部楼层
你先把LoadLibraryA和LoadLibraryW的区别,还有ansi编码和UNICODE编码弄明白了就知道我在说什么了
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-24 12:56:30 | 显示全部楼层
xiao14116 发表于 2022-9-24 12:31
你先把LoadLibraryA和LoadLibraryW的区别,还有ansi编码和UNICODE编码弄明白了就知道我在说什么了

我明白你说的什么,但是我不明白typedef HINSTANCE(WINAPI *lpfnLoadLibraryA)(LPCTSTR*);他的意思,还有     LoadLibraryA=(lpfnLoadLibraryA)GetProcAddress(hModule,TEXT("LoadLibraryA"));这里作为参数传入的loadlibraryA的意思,所以我不知道怎么改
04_avatar_middle
最佳答案
22 
online_vip 发表于 2022-9-24 18:31:12 | 显示全部楼层
百度一下动态链接库的显式调用和隐式调用就知道了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-4 21:09

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表