/// <summary> /// 写内存字节集 /// </summary> /// <param name="ProcessID">进程ID,-1为自进程</param> /// <param name="Address">地址 无符号整数型</param> /// <param name="Data">写入数据 字节数组型</param> /// <param name="Size">写入长度 0为完整长度</param> /// <returns>返回是否成功</returns> public static bool WriteMemByteArray(int ProcessID, uint Address, byte[] Data, int Size) { //声明变量 int a = 0; IntPtr handle = new IntPtr(); if (ProcessID == -1) //-1为自进程 { handle = ProcessAPI.GetCurrentProcess(); } else { handle = ProcessAPI.OpenProcess(ReadWriteAPI.PROCESS_ALL_ACCESS, false, ProcessID); //获取句柄 } if (Size == 0) { a = ReadWriteAPI.WriteProcessMemory(handle, Address, Data, Data.Length, 0); } else { a = ReadWriteAPI.WriteProcessMemory(handle, Address, Data, Size, 0); } ProcessAPI.CloseHandle(handle); //关闭对象 if (a == 0) //返回bool型 { return(false); } else { return(true); } }
/// <summary> /// 写内存整数型 /// </summary> /// <param name="ProcessID">进程ID,-1为自进程</param> /// <param name="Address">地址 无符号整数型</param> /// <param name="Data">写入数据</param> /// <returns>返回是否成功</returns> public static bool WriteMemInt(int ProcessID, uint Address, int Data) { //声明变量 int a = 0; IntPtr handle = new IntPtr(); byte[] temp = new byte[4]; temp = BitConverter.GetBytes(Data); if (ProcessID == -1) //-1为自进程 { handle = ProcessAPI.GetCurrentProcess(); } else { handle = ProcessAPI.OpenProcess(ReadWriteAPI.PROCESS_ALL_ACCESS, false, ProcessID); //获取句柄 } a = ReadWriteAPI.WriteProcessMemory(handle, Address, temp, 4, 0); ProcessAPI.CloseHandle(handle); //关闭对象 if (a == 0) //返回bool型 { return(false); } else { return(true); } }