这些代码可以在我写的测试程序4的进程里修改0x004014FE的跳转
HWND mainhwnd1=::FindWindow(NULL,_T("4")); //查找主窗口
GetWindowThreadProcessId(mainhwnd1 ,&p);//得到窗口的ProcessID
HANDLE m_hProcess=OpenProcess(PROCESS_ALL_ACCESS,true,p);//打开Process
BYTE b=0xEB;
WriteProcessMemory(m_hProcess,(LPVOID)0x004014FE,&b,1,NULL);
但是我想修改的代码放在配置文件里
CString str;
CStdioFile file;
file.Open(_T("c.ini"), CFile::modeRead)
file.ReadString(str);
file.Close();
_stscanf_s( str, _T("%x"), &p1 );
BYTE b=(BYTE)p1;
WriteProcessMemory(m_hProcess,(LPVOID)0x004014FE,&b,1,NULL);
如果c.ini文件的第一行写0xEB时WriteProcessMemory运行跟我想象的一样正常
但如果我想多写点代码比如str=0x39BD60FAFFFF
请问应该怎么做
HWND mainhwnd1=::FindWindow(NULL,_T("4")); //查找主窗口
GetWindowThreadProcessId(mainhwnd1 ,&p);//得到窗口的ProcessID
HANDLE m_hProcess=OpenProcess(PROCESS_ALL_ACCESS,true,p);//打开Process
BYTE b=0xEB;
WriteProcessMemory(m_hProcess,(LPVOID)0x004014FE,&b,1,NULL);
但是我想修改的代码放在配置文件里
CString str;
CStdioFile file;
file.Open(_T("c.ini"), CFile::modeRead)
file.ReadString(str);
file.Close();
_stscanf_s( str, _T("%x"), &p1 );
BYTE b=(BYTE)p1;
WriteProcessMemory(m_hProcess,(LPVOID)0x004014FE,&b,1,NULL);
如果c.ini文件的第一行写0xEB时WriteProcessMemory运行跟我想象的一样正常
但如果我想多写点代码比如str=0x39BD60FAFFFF
请问应该怎么做
解决方案 »
- 多线程下载得到的数据大小不对
- 如何利用MFC读CPU温度,(酷睿双核945),就像鲁大师那样
- 如何实现拖动文件夹,将里面的项目添加到CListCtrl中
- 想再学一种Windows下的快速开发平台,请大家为我推荐一种!
- 新人新手:如何利用mfc+odbc判断access数据库中是否存在某个名为kkk的表?
- 如何实现用鼠标拖动一串字符?(字符随鼠标移动)字符串在移动时事是透明的!
- 关于取得列表框内容的问题,简单,在线等待,马上给分
- 如何把添加到Control面板上的ActiveX控件删除掉??
- 请问:DWORD_PTR在vc中是怎样定义的?在那个头文件定义的?
- 如何使一个CDialogBar上的CStatic控件能显示tool tip?
- 知道某一窗口的句柄,如何让该窗口显示出来
- 关于Cstring Find() 函数的问题
int nLength = ( str.GetLength() - 2 ) / 2; // 2个字符一组,放进一个 byte 中
byte *pBuffer = new byte[nLength];
str = str.Right( str.GetLength() - 2 ); // 去掉 0x for ( int i = 0; i < nLength; i++ )
{
CString strByte = str.Left( 2 );
int nTemp = 0;
_stscanf_s( strByte, _T("%x"), &nTemp );
pBuffer[i] = (byte)nTemp;
str = str.Right( str.GetLength() - 2 );
}
CStdioFile file;
if(!(file.Open(_T("c.ini"), CFile::modeRead)))
{
MessageBox(_T("没有找到配置文件c.ini"));
return;
}
file.ReadString(s_1);
file.Close(); //一不用file就关闭
AfxExtractSubString(str,s_1,1,'_'); ////////////MFC隐藏函数___用来导出选定符号前的字符一次导出一个
AfxExtractSubString(stri,s_1,2,'_');
int ilong; //写入内存代码的长度.....2个字符一个字节
ilong= _ttoi(stri); //把读到的字符转成数字变量
int nLength = ( str.GetLength() - 2 ) / 2; // 2个字符一组,放进一个 byte 中
byte *pBuffer = new byte[nLength];
str = str.Right( str.GetLength() - 2 ); // 去掉 0x for ( int i = 0; i < nLength; i++ )
{
CString strByte = str.Left( 2 );
int nTemp = 0;
_stscanf_s( strByte, _T("%x"), &nTemp );
pBuffer[i] = (byte)nTemp;
str = str.Right( str.GetLength() - 2 );
} unsigned long p1=0x00;
HWND mainhwnd1=::FindWindow(NULL,_T("30")); //查找主窗口
GetWindowThreadProcessId(mainhwnd1,&p1);//得到窗口的ProcessID
HANDLE m_hProcess=OpenProcess(PROCESS_ALL_ACCESS,true,p1);//打开Process
WriteProcessMemory(m_hProcess,(LPVOID)0x00401518,pBuffer,ilong,NULL); //写入内存
HWND mainhwnd1;
mainhwnd1=::FindWindow(NULL,_T("无标题 - 29"));
::PostMessage (mainhwnd1, WM_COMMAND,57601,NULL);