-
-
[旧帖]
win7 api hook 用备份函数法(备份DLL) 失败
0.00雪花
-
发表于:
2010-9-27 10:31
6853
-
[旧帖] win7 api hook 用备份函数法(备份DLL) 失败
0.00雪花
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 限制了什么?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!