#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<Winbase.h>
void main()
{
HWND hDlg1=NULL;
HWND fDlg2=NULL;
DWORD HOPS;
char DllPath[MAX_PATH]="C:\\insrete.dll";
hDlg1=FindWindow("Notepad","测试文档.txt - 记事本"); DWORD DAAA;
HOPS=GetWindowThreadProcessId(hDlg1,&DAAA);
if(HOPS=NULL)
{
cout<<"shibai1";
}
else;
cout<<DAAA;
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,HOPS);
//获取进程句柄
cout<<hProcess;
//测试
if(hProcess=NULL)
{
cout<<"shibai2";
}
int cb=(1+lstrlen(DllPath))*sizeof(char);
//定义以下函数返回值
LPVOID sixty;
sixty=VirtualAllocEx(hProcess,NULL,cb,MEM_COMMIT,PAGE_READWRITE);//向分配的内存地址中写入insrete.dll
if(WriteProcessMemory(hProcess,sixty,(LPVOID)DllPath,cb,NULL)==0)
{
cout<<"shibai3";
}
语法没有错误,insrete.dll也存在,是不是我的dll文件有问题,还是其他问题?
好几天了,一直在纠结
本人菜鸟,代码写的很乱,请高手回答,感激不尽啊
#include<conio.h>
#include<windows.h>
#include<Winbase.h>
void main()
{
HWND hDlg1=NULL;
HWND fDlg2=NULL;
DWORD HOPS;
char DllPath[MAX_PATH]="C:\\insrete.dll";
hDlg1=FindWindow("Notepad","测试文档.txt - 记事本"); DWORD DAAA;
HOPS=GetWindowThreadProcessId(hDlg1,&DAAA);
if(HOPS=NULL)
{
cout<<"shibai1";
}
else;
cout<<DAAA;
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,HOPS);
//获取进程句柄
cout<<hProcess;
//测试
if(hProcess=NULL)
{
cout<<"shibai2";
}
int cb=(1+lstrlen(DllPath))*sizeof(char);
//定义以下函数返回值
LPVOID sixty;
sixty=VirtualAllocEx(hProcess,NULL,cb,MEM_COMMIT,PAGE_READWRITE);//向分配的内存地址中写入insrete.dll
if(WriteProcessMemory(hProcess,sixty,(LPVOID)DllPath,cb,NULL)==0)
{
cout<<"shibai3";
}
语法没有错误,insrete.dll也存在,是不是我的dll文件有问题,还是其他问题?
好几天了,一直在纠结
本人菜鸟,代码写的很乱,请高手回答,感激不尽啊
{
int n = GetLastError(); //看看什么问题,错误代码是多少
cout<<"shibai3";
}
那就是你这句函数有错,估计不能用这个FLAG PROCESS_ALL_ACCESS 来调用
HOPS=GetWindowThreadProcessId(hDlg1,&DAAA);
原因:
GetWindowThreadProcessId的返回值是线程ID(HOPS 的值),进程ID由变量DAAA返回,
所以你的OpenProcess语句需要修改:OpenProcess(PROCESS_ALL_ACCESS,TRUE,DAAA);