首页
社区
课程
招聘
[旧帖] win7 api hook 用备份函数法(备份DLL) 失败 0.00雪花
发表于: 2010-9-27 10:31 6853

[旧帖] win7 api hook 用备份函数法(备份DLL) 失败 0.00雪花

2010-9-27 10:31
6853
win7 api hook 用备份函数法(备份DLL),失败,失败原因是,WriteProcessMemory();
不能写入DLL数据,如果写入其他数据就可以.

同样的代码拿到WIN XP运行完全正常的,在WIN 7上运行就不能写入了(就是不能备份了);

void BackDll()
{
        MODULEINFO modinfo;
        GetModuleInformation(INVALID_HANDLE_VALUE,GetModuleHandle(L"user32.dll"),&modinfo,sizeof(MODULEINFO));
        LPVOID bakdlladdr = VirtualAllocEx(INVALID_HANDLE_VALUE, NULL, modinfo.SizeOfImage, 4096, 4 );
        BOOL rw = WriteProcessMemory(INVALID_HANDLE_VALUE,bakdlladdr,(LPCVOID)modinfo.lpBaseOfDll,modinfo.SizeOfImage,NULL);
        if (rw == 0)
        {
                ::MessageBox(NULL,L"WriteProcessMemory失败!",L"",NULL);
        }
        DWORD NowApi = (DWORD)bakdlladdr + (DWORD)GetProcAddress(GetModuleHandle(L"user32.dll"),"MessageBoxW") - (DWORD)modinfo.lpBaseOfDll;
        _MessageBox = (MESSAGEBOX)NowApi;
}

注:同样代码生成的程序在WIN XP上可正常的.是不是WIN7 限制了什么?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 137
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加个GetLastError看看错误代码把
2010-9-27 12:19
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
err = 299,但不知道怎么解决啊!
2010-9-27 12:36
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
Win7你可以试着激活一下自己的令牌环权限,因为Win7的用户默认权限并不是管理员,具体你可以看参考Windows内心编程第五版
2010-9-28 04:58
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
试过提升进程权限,但是没用!要是程序编译成64位,才可以写入数据!32位就写不出任何数据.
但是WIN7 64位系统都有32位的运行库(SysWOW64)的啊!
2010-10-1 10:28
0
游客
登录 | 注册 方可回帖
返回
//