-
-
[旧帖] [求助]远程注入一个函数出现内存读写错误 0.00雪花
-
发表于: 2015-9-6 16:43 1202
-
打算注入到资源管理器进程,执行CreateProcessA这个函数运行一个记事本,代码如下
bool Inject(const char *DllFullPath, const DWORD dwRemoteProcessId)
{
HANDLE hRemoteProcess, hRemoteThread;
if(!EnableDebugPriv(SE_DEBUG_NAME)) return false;
//打开目标进程
if((hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwRemoteProcessId)) == NULL) return false;
//得到CreateProcessA函数地址
PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.DLL"), "CreateProcessA");
if(pfnStartAddr == NULL) return false;
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;//必备参数设置结束
if((hRemoteThread = CreateRemoteThread(hRemoteProcess, NULL, 0, pfnStartAddr, (NULL,TEXT("c:\\windows\\system32\\notepad.exe"),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi), 0, NULL)) == NULL) return false;
cout<<"Inject TRUE!"<<endl;
return true;
}
最后cout的那句"Inject TRUE!"正常输出了,说明远程线程启动成功了,但是弹出一个内存读写错误的对话框:0x7c818837引用的0x7c839b48内存不能为"written"。补充一点,读到的CreateProcessA函数的地址是0x7c802336.点完确定之后资源管理器直接重启了。求大神支援~~~不尽感激
bool Inject(const char *DllFullPath, const DWORD dwRemoteProcessId)
{
HANDLE hRemoteProcess, hRemoteThread;
if(!EnableDebugPriv(SE_DEBUG_NAME)) return false;
//打开目标进程
if((hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwRemoteProcessId)) == NULL) return false;
//得到CreateProcessA函数地址
PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.DLL"), "CreateProcessA");
if(pfnStartAddr == NULL) return false;
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;//必备参数设置结束
if((hRemoteThread = CreateRemoteThread(hRemoteProcess, NULL, 0, pfnStartAddr, (NULL,TEXT("c:\\windows\\system32\\notepad.exe"),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi), 0, NULL)) == NULL) return false;
cout<<"Inject TRUE!"<<endl;
return true;
}
最后cout的那句"Inject TRUE!"正常输出了,说明远程线程启动成功了,但是弹出一个内存读写错误的对话框:0x7c818837引用的0x7c839b48内存不能为"written"。补充一点,读到的CreateProcessA函数的地址是0x7c802336.点完确定之后资源管理器直接重启了。求大神支援~~~不尽感激
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
看原图
赞赏
雪币:
留言: