我想将dll注入到NOTEPAD中
出现提示说NOTEPAD遇到错误需要关闭。
代码如下:BOOL insert()
{
DWORD pid = 0;
int ret = 0;
char * dllpath=NULL;
dllpath = "G:\\新建文件夹\\insert\\Debug";
if(_access(dllpath,0) ==-1 )
{
printf("access %s Faild\n",dllpath);
}
printf("dll path %s\n",dllpath); HWND hWnd = FindWindow("NOTEPAD", NULL); // 以NOTEPAD为例
::GetWindowThreadProcessId(hWnd, &pid);
HANDLE hProcess = NULL;
HANDLE hRemoteThread = NULL;
void * pLibRemote = NULL;
DWORD hLibModule = 0;
HINSTANCE huser32 = NULL; huser32 = GetModuleHandle("user32.dll");
if(huser32 == NULL)
{
printf("Get huser32 HANDLE Failed\n");
return FALSE;
} hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
if(hProcess == NULL)
{
printf("Get openProcess HANDLE Failed\n");
return FALSE;
} pLibRemote = VirtualAllocEx(hProcess,
NULL,
sizeof(dllpath),
MEM_COMMIT,
PAGE_READWRITE);
ret = WriteProcessMemory(hProcess,
pLibRemote,
(void *) dllpath,
sizeof(dllpath),
NULL);
if(ret == 0)
{
printf("Write Remote Process Memory Failed\n");
return FALSE;
} hRemoteThread = CreateRemoteThread(hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)
GetProcAddress (huser32 ,"LoadLibraryA"),
pLibRemote,
0,
);//这里出现问题?
//WaitForSingleObject(hRemoteThread,INFINITE); GetExitCodeThread(hRemoteThread,&hLibModule); CloseHandle(hRemoteThread); VirtualFreeEx(hProcess,
pLibRemote,
sizeof(dllpath),
MEM_RELEASE);
CloseHandle(hProcess);
printf("INJECT FINISH\n");
return TRUE;}
int main()
{
insert();
return 1;
}
出现提示说NOTEPAD遇到错误需要关闭。
代码如下:BOOL insert()
{
DWORD pid = 0;
int ret = 0;
char * dllpath=NULL;
dllpath = "G:\\新建文件夹\\insert\\Debug";
if(_access(dllpath,0) ==-1 )
{
printf("access %s Faild\n",dllpath);
}
printf("dll path %s\n",dllpath); HWND hWnd = FindWindow("NOTEPAD", NULL); // 以NOTEPAD为例
::GetWindowThreadProcessId(hWnd, &pid);
HANDLE hProcess = NULL;
HANDLE hRemoteThread = NULL;
void * pLibRemote = NULL;
DWORD hLibModule = 0;
HINSTANCE huser32 = NULL; huser32 = GetModuleHandle("user32.dll");
if(huser32 == NULL)
{
printf("Get huser32 HANDLE Failed\n");
return FALSE;
} hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
if(hProcess == NULL)
{
printf("Get openProcess HANDLE Failed\n");
return FALSE;
} pLibRemote = VirtualAllocEx(hProcess,
NULL,
sizeof(dllpath),
MEM_COMMIT,
PAGE_READWRITE);
ret = WriteProcessMemory(hProcess,
pLibRemote,
(void *) dllpath,
sizeof(dllpath),
NULL);
if(ret == 0)
{
printf("Write Remote Process Memory Failed\n");
return FALSE;
} hRemoteThread = CreateRemoteThread(hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)
GetProcAddress (huser32 ,"LoadLibraryA"),
pLibRemote,
0,
);//这里出现问题?
//WaitForSingleObject(hRemoteThread,INFINITE); GetExitCodeThread(hRemoteThread,&hLibModule); CloseHandle(hRemoteThread); VirtualFreeEx(hProcess,
pLibRemote,
sizeof(dllpath),
MEM_RELEASE);
CloseHandle(hProcess);
printf("INJECT FINISH\n");
return TRUE;}
int main()
{
insert();
return 1;
}
解决方案 »
- DIB中的位图数据块存储的是什么值,是每个点的颜色值吗??
- 为什么WININET 和 SOCKET 实现网页下载速度相差很大
- 窗口分割后,重载CHtmlView中的虚函数不再响应
- 请大虾指教:学完c++的这些书能到什么份上?(谢谢)
- 新手:请大家指点一下网络、数据库编程的基础问题。
- CStringArray求救
- 数据库开发选择?
- 关于listbox
- C ++ 中关于 new 和 delete 的问题。
- 高手请看:如何实现树型控件标签的in-place编辑?即象在资源管理器的树型控件中选择“重命名”一样编辑?
- 谁有用vc操作sybase数据库的程序,发个程序给我,50分奉上!!!
- 谁有sybase的简介文档,我想了解下,然后下个sybase,然后用它写个程序
注入的进程NOTEPAD(记事本)提示出错
还是回出现一样的问题 ?
NULL,
strlen(dllpath)+1,
MEM_COMMIT,
PAGE_READWRITE);
这个也改了!
NULL,
0,
(LPTHREAD_START_ROUTINE)
GetProcAddress (huser32 ,"LoadLibraryA"),
pLibRemote,
0,
);//
-----------------------------------------
少了个参数,能编译通过么
贴的时候弄掉了!
hRemoteThread = CreateRemoteThread(hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)
GetProcAddress (huser32 ,"LoadLibraryA"),
pLibRemote,
0,
NULL);//
dllpath = "G:\\新建文件夹\\insert\\Debug\any.dll";