首页
社区
课程
招聘
[旧帖] [求助]关于自己实现WriteProcessMemory的一点问题 0.00雪花
发表于: 2009-7-19 22:53 4881

[旧帖] [求助]关于自己实现WriteProcessMemory的一点问题 0.00雪花

2009-7-19 22:53
4881
出于一时好奇跟了下WriteProcessMemory,想自己实现一下,说白了是拼凑一下,但是我做的这个函数却没有WriteProcessMemory的效果。。很是奇怪,代码如下:

//自定义写内存函数
void MyWriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPVOID lpBuffer,DWORD nSize, LPDWORD lpNumberOfBytesWritten)
{
        if( VirtualProtectEx(hProcess, lpBaseAddress, nSize, PAGE_EXECUTE_READWRITE, &flOldProtect) == TRUE)
                AfxMessageBox(_T("access protection is changed"));
        ULONG WVM_Adress = (ULONG)::GetProcAddress(::GetModuleHandle(_T("Ntdll.dll")), "ZwWriteVirtualMemory") + 6;
        __asm
        {
                mov ebx,[WVM_Adress];
                mov ecx,[ebx];
                mov esp,ebp;
                pop ebp;
                mov eax, 0x115;
                jmp [ecx];
        }
}

其中WVM_Adress是ZwWriteVirtualMemory函数中的7FFE0300:
MOV EAX,115
MOV EDX,7FFE0300
CALL [EDX];

我跟踪了我的函数,确实执行到了:
MOV EDX,ESP
SYSENTER
RETN
和正常的API调用一样执行到这个自陷处,前面那个VirtualProtectEx返回值也是TRUE,说明更改目标内存的属性也是没问题吧

     最后目标内存还是没有被更改,所以实在不明白症结所在,请各位大大指点迷津,谢谢了

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 146
活跃值: (33)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
为什么没人理我?我的问题档次太低了吗?
2009-7-20 20:15
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
进程句柄有没有写权限啊?
2009-7-20 20:19
0
雪    币: 146
活跃值: (33)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
当然有权限,问题已解决,谢谢关注
2009-7-30 01:17
0
雪    币: 117
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这种只有一个“已解决”的贴子建议版主删除!
2010-4-22 14:23
0
雪    币: 235
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LZ要过HIPS?
2010-4-23 02:34
0
游客
登录 | 注册 方可回帖
返回
//