zoukankan      html  css  js  c++  java
  • C++内存读写例子

    /*************************************************************
    //		声明头文件
    #ifndef LyShark__h
    #define LyShark__h
    
    #pragma comment(lib,"LyShark.lib");
    
    extern "C"__declspec(dllexport) int GetProcessID(char *Name);
    
    extern "C"__declspec(dllexport) int GetIntMemory_One(int Pid,long Base,int One);
    extern "C"__declspec(dllexport) int GetIntMemory_Two(int Pid,long Base,int One,int Two);
    extern "C"__declspec(dllexport) int GetIntMemory_Three(int Pid,long Base,int One,int Two,int Three);
    extern "C"__declspec(dllexport) int GetIntMemory_Four(int Pid,long Base,int One,int Two,int Three,int Four);
    extern "C"__declspec(dllexport) int GetIntMemory_Five(int Pid,long Base,int One,int Two,int Three,int Four,int Five);
    extern "C"__declspec(dllexport) int GetIntMemory_Six(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int Six);
    
    
    extern "C"__declspec(dllexport) int SetIntMemory_One(int Pid,long Base,int One,int WriteValue);
    extern "C"__declspec(dllexport) int SetIntMemory_Two(int Pid,long Base,int One,int Two,int WriteValue);
    extern "C"__declspec(dllexport) int SetIntMemory_Three(int Pid,long Base,int One,int Two,int Three,int WriteValue);
    extern "C"__declspec(dllexport) int SetIntMemory_Four(int Pid,long Base,int One,int Two,int Three,int Four,int WriteValue);
    extern "C"__declspec(dllexport) int SetIntMemory_Five(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int WriteValue);
    extern "C"__declspec(dllexport) int SetIntMemory_Six(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int Six,int WriteValue);
    
    #endif LyShark__h
    
    */
    //*************************************************************
    #include <windows.h>
    
    bool APIENTRY DllMain(HANDLE handle,DWORD dword,LPVOID lpvoid)
    {
    	return true;
    }
    
    //*************************************************************
    //		打开进程,取进程PID
    extern "C"__declspec(dllexport) int GetProcessID(char *Name)
    {
    	HWND Pid=::FindWindow(NULL,Name);
    	DWORD Retn;
    	::GetWindowThreadProcessId(Pid,&Retn);
    	return Retn;
    }
    
    //*************************************************************
    //		读取内存偏移整数型
    extern "C"__declspec(dllexport) int GetIntMemory_One(int Pid,long Base,int One)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;	
    }
    
    extern "C"__declspec(dllexport) int GetIntMemory_Two(int Pid,long Base,int One,int Two)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;	
    }
    
    extern "C"__declspec(dllexport) int GetIntMemory_Three(int Pid,long Base,int One,int Two,int Three)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;	
    	
    }
    
    extern "C"__declspec(dllexport) int GetIntMemory_Four(int Pid,long Base,int One,int Two,int Three,int Four)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;
    
    }
    
    extern "C"__declspec(dllexport) int GetIntMemory_Five(int Pid,long Base,int One,int Two,int Three,int Four,int Five)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Five);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;
    	
    }
    
    extern "C"__declspec(dllexport) int GetIntMemory_Six(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int Six)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Six);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Five);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	return Value;
    	
    }
    
    //*************************************************************
    //		写入内存偏移整数型
    
    extern "C"__declspec(dllexport) int SetIntMemory_One(int Pid,long Base,int One,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    	
    }
    
    extern "C"__declspec(dllexport) int SetIntMemory_Two(int Pid,long Base,int One,int Two,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    	
    }
    extern "C"__declspec(dllexport) int SetIntMemory_Three(int Pid,long Base,int One,int Two,int Three,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    }
    
    extern "C"__declspec(dllexport) int SetIntMemory_Four(int Pid,long Base,int One,int Two,int Three,int Four,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    }
    
    extern "C"__declspec(dllexport) int SetIntMemory_Five(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Five);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    	
    }
    
    extern "C"__declspec(dllexport) int SetIntMemory_Six(int Pid,long Base,int One,int Two,int Three,int Four,int Five,int Six,int WriteValue)
    {
    	DWORD byread;
    	int Value=0;
    	HANDLE proce=::OpenProcess(PROCESS_ALL_ACCESS,false,Pid);
    	LPCVOID pbase=(LPCVOID)Base;
    	LPVOID rbuffer=(LPVOID)&Value;
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Six);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Five);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Four);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Three);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + Two);
    
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    	pbase = (LPCVOID)(Value + One);
    	
    	::ReadProcessMemory(proce,pbase,rbuffer,4,&byread);
    
    
    	DWORD bywrite;
    	LPVOID wbuffer = (LPVOID)&WriteValue;
    	WriteProcessMemory(proce,(LPVOID)pbase,wbuffer,4,&bywrite);
    
    	return 1;
    	
    }
    
    
    
    
  • 相关阅读:
    安装pip-9.0.1-py2.py3-none-any.whl
    Flask-Moment本地化日期和时间
    在windows下使用VirtualEnv建立flask项目
    java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)
    java web中cookie的永久创建与撤销
    myeclipse与数据库进行连接(无需写代码进行验证)
    求二维数组最大子数组和
    Java代码实现 增删查 + 分页——实习第四天
    JDBC 数据库连接操作——实习第三天
    Java基础语法实例(2)——实习第二天
  • 原文地址:https://www.cnblogs.com/LyShark/p/10775440.html
Copyright © 2011-2022 走看看