Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }