Beispiel #1
0
        public UnityEngine.Matrix4x4 ReadMatrix(long addr)
        {
            UnityEngine.Matrix4x4 tmp = new UnityEngine.Matrix4x4();

            byte[] Buffer = new byte[64];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 64, out ByteRead);

            tmp.m00 = BitConverter.ToSingle(Buffer, (0 * 4));
            tmp.m01 = BitConverter.ToSingle(Buffer, (1 * 4));
            tmp.m02 = BitConverter.ToSingle(Buffer, (2 * 4));
            tmp.m03 = BitConverter.ToSingle(Buffer, (3 * 4));

            tmp.m10 = BitConverter.ToSingle(Buffer, (4 * 4));
            tmp.m11 = BitConverter.ToSingle(Buffer, (5 * 4));
            tmp.m12 = BitConverter.ToSingle(Buffer, (6 * 4));
            tmp.m13 = BitConverter.ToSingle(Buffer, (7 * 4));

            tmp.m20 = BitConverter.ToSingle(Buffer, (8 * 4));
            tmp.m21 = BitConverter.ToSingle(Buffer, (9 * 4));
            tmp.m22 = BitConverter.ToSingle(Buffer, (10 * 4));
            tmp.m23 = BitConverter.ToSingle(Buffer, (11 * 4));

            tmp.m30 = BitConverter.ToSingle(Buffer, (12 * 4));
            tmp.m31 = BitConverter.ToSingle(Buffer, (13 * 4));
            tmp.m32 = BitConverter.ToSingle(Buffer, (14 * 4));
            tmp.m33 = BitConverter.ToSingle(Buffer, (15 * 4));
            return(tmp);
        }
Beispiel #2
0
        public System.Numerics.Matrix4x4 ReadMatrix(long addr)
        {
            System.Numerics.Matrix4x4 tmp = new System.Numerics.Matrix4x4();

            byte[] Buffer = new byte[64];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 64, out ByteRead);

            tmp.M11 = BitConverter.ToSingle(Buffer, (0 * 4));
            tmp.M12 = BitConverter.ToSingle(Buffer, (1 * 4));
            tmp.M13 = BitConverter.ToSingle(Buffer, (2 * 4));
            tmp.M14 = BitConverter.ToSingle(Buffer, (3 * 4));

            tmp.M21 = BitConverter.ToSingle(Buffer, (4 * 4));
            tmp.M22 = BitConverter.ToSingle(Buffer, (5 * 4));
            tmp.M23 = BitConverter.ToSingle(Buffer, (6 * 4));
            tmp.M24 = BitConverter.ToSingle(Buffer, (7 * 4));

            tmp.M31 = BitConverter.ToSingle(Buffer, (8 * 4));
            tmp.M32 = BitConverter.ToSingle(Buffer, (9 * 4));
            tmp.M33 = BitConverter.ToSingle(Buffer, (10 * 4));
            tmp.M34 = BitConverter.ToSingle(Buffer, (11 * 4));

            tmp.M41 = BitConverter.ToSingle(Buffer, (12 * 4));
            tmp.M42 = BitConverter.ToSingle(Buffer, (13 * 4));
            tmp.M43 = BitConverter.ToSingle(Buffer, (14 * 4));
            tmp.M44 = BitConverter.ToSingle(Buffer, (15 * 4));
            return(tmp);
        }
Beispiel #3
0
        public byte ReadByte(long addr)
        {
            byte[] Buffer = new byte[sizeof(byte)];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, sizeof(byte), out ByteRead);
            return(Buffer[0]);
        }
Beispiel #4
0
        public float ReadFloat(long addr)
        {
            byte[] Buffer = new byte[sizeof(float)];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, sizeof(float), out ByteRead);
            return(BitConverter.ToSingle(Buffer, 0));
        }
Beispiel #5
0
        public Int32 ReadInt32(long addr)
        {
            byte[] Buffer = new byte[4];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 4, out ByteRead);
            return(BitConverter.ToInt32(Buffer, 0));
        }
Beispiel #6
0
        public long ReadInt64(long addr)
        {
            byte[] Buffer = new byte[8];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 8, out ByteRead);
            return(BitConverter.ToInt64(Buffer, 0));
        }
Beispiel #7
0
        public string ReadString(long addr)
        {
            byte[] buffer = new byte[512];
            IntPtr BytesRead;

            RPM.ReadProcessMemory(this.hProc, addr, buffer, 512, out BytesRead);
            // split it at the first null character (that's how char*'s work)
            return(Encoding.ASCII.GetString(buffer).Split('\0')[0]);
        }
Beispiel #8
0
        public UnityEngine.Vector3 ReadVector3(long addr)
        {
            UnityEngine.Vector3 tmp = new UnityEngine.Vector3();

            byte[] Buffer = new byte[12];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 12, out ByteRead);
            tmp.x = BitConverter.ToSingle(Buffer, (0 * 4));
            tmp.y = BitConverter.ToSingle(Buffer, (1 * 4));
            tmp.z = BitConverter.ToSingle(Buffer, (2 * 4));
            return(tmp);
        }
Beispiel #9
0
        public System.Numerics.Vector3 ReadVector3(long addr)
        {
            System.Numerics.Vector3 tmp = new System.Numerics.Vector3();

            byte[] Buffer = new byte[12];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, 12, out ByteRead);
            tmp.X = BitConverter.ToSingle(Buffer, (0 * 4));
            tmp.Y = BitConverter.ToSingle(Buffer, (1 * 4));
            tmp.Z = BitConverter.ToSingle(Buffer, (2 * 4));
            return(tmp);
        }
Beispiel #10
0
        // Read entire stuct at once, rather than each member individually
        public T ReadStruct <T>(long addr)
        {
            byte[] Buffer = new byte[Marshal.SizeOf(typeof(T))];
            IntPtr ByteRead;

            RPM.ReadProcessMemory(this.hProc, addr, Buffer, (ulong)Marshal.SizeOf(typeof(T)), out ByteRead);
            IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)));

            Marshal.Copy(Buffer, 0, ptr, Marshal.SizeOf(typeof(T)));
            T t = Marshal.PtrToStructure <T>(ptr);

            Marshal.FreeHGlobal(ptr);
            return(t);
        }