首页
社区
课程
招聘
[旧帖] [求助]WriteProcessMemory 返回错误5 0.00雪花
发表于: 2011-3-14 19:14 2267

[旧帖] [求助]WriteProcessMemory 返回错误5 0.00雪花

2011-3-14 19:14
2267
我是下载的这篇帖子的源程序,http://bbs.pediy.com/showthread.php?t=65391
但是在我的机子上(32位win xp)编译通过后,一运行总是在WriteProcessMemory这里出错,GetLastError返回5 。
这个程序中,进程的权限已经提升,OpenProcee 和 VirtualAlloc也都没有问题(GetLastError都返回0),但是一到WriteProcessMemory就错,真是崩溃死了。下面贴一下关键代码:

BOOL grant_priv(char *priv) {
        HANDLE hToken;
        TOKEN_PRIVILEGES tkp;

        if (!LookupPrivilegeValue(NULL, priv, &tkp.Privileges[0].Luid))
                return FALSE;
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
                return FALSE;
        tkp.PrivilegeCount = 1;
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL))
                return FALSE;
        CloseHandle(hToken);
        return TRUE;
}

bRet = grant_priv("SeDebugPrivilege"); //提升权限

        hProc = OpenProcess(PROCESS_ALL_ACCESS| PROCESS_VM_OPERATION| PROCESS_VM_READ | PROCESS_VM_WRITE,
                FALSE,
                1008);  //1008是进程id 这个数字在我机子上(某次启动)是lsass.exe进程的。

        pRemoteAddr = (PSTR)VirtualAllocEx(hProc, NULL, len + 1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

        bRet = WriteProcessMemory(hProc, pRemoteAddr, argv[3], len+1 , NULL);

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对openprocess和分配内存操作都进行检查下吧,找出问题所在。
2011-3-14 20:50
0
雪    币: 61
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
我实际上已经对OpenProcess 和 VirtualAlloc函数 进行过验证了,获取的错误码都是0,也就是说都是成功执行的,没有问题,这里为了清晰起见,我没有附上这部分代码,只提供了最核心的部分。
2011-3-14 21:50
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
被安全软件拦截。。。
2011-3-14 22:17
0
雪    币: 61
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
我未装任何杀毒软件,360安全卫士等软件。而且是xp系统,应该也不存在UAC认证之类的问题吧~
2011-3-15 10:46
0
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
乱猜一下,病毒inlinehook了系统函数NtWriteVirtualMemory?

或者还是检查下WriteProcessMemory的最后一个参数,看看到底写了多少个字节。
2011-3-15 22:23
0
雪    币: 61
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
知道原因了,是360安全卫士的缘故,实际上我当初装了360之后,早就禁用它了,在开机启动的项中也关掉了任何有关360的进程。但是居然还有影响,看来360还是有些隐藏进程在作祟啊,可恶~
卸载之后,问题解决~
2011-3-16 17:55
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
8
无语,竟然认为自己处理完了,人家做杀毒的难道还不如你?
2011-3-19 11:10
0
游客
登录 | 注册 方可回帖
返回
//