Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class RPC
- {
- private static uint function_address = 0x007AA050;
- public static uint Call(uint func_address, params object[] parameters)
- {
- int length = parameters.Length;
- for (uint i = 0; i < length; i++)
- {
- if (parameters[i] is int)
- {
- byte[] array = BitConverter.GetBytes((int)parameters[i]);
- Array.Reverse(array);
- SetMemory(0x10050008 + (i * 4), array);
- }
- else if (parameters[i] is uint)
- {
- byte[] buffer2 = BitConverter.GetBytes((uint)parameters[i]);
- Array.Reverse(buffer2);
- SetMemory(0x10050008 + (i * 4), buffer2);
- }
- else if (parameters[i] is string)
- {
- byte[] buffer3 = Encoding.UTF8.GetBytes(Convert.ToString(parameters[i]) + "\0");
- SetMemory(0x1005002c + (i * 0x150), buffer3);
- uint num3 = 0x1005002c + (i * 0x150);
- byte[] buffer4 = BitConverter.GetBytes(num3);
- Array.Reverse(buffer4);
- SetMemory(0x10050008 + (i * 4), buffer4);
- }
- }
- for (int j = 9 - length; j <= 9; j++)
- {
- SetMemory((uint)(0x10050008 + (j * 4)), new byte[4]);
- }
- byte[] bytes = BitConverter.GetBytes(func_address);
- Array.Reverse(bytes);
- SetMemory(0x10050000, bytes);
- System.Threading.Thread.Sleep(20);
- byte[] GetX = new byte[4];
- byte[] memory = GetMemory(0x10050004, 4);
- Array.Reverse(memory);
- return BitConverter.ToUInt32(memory, 0);
- }
- public static void Enable_RPC()
- {
- byte[] CheckRPC = new byte[1];
- if (CheckRPC[0] == 0x4e)
- {
- }
- else
- {
- SetMemory(function_address, new byte[] { 0x4e, 0x80, 0, 0x20 });
- byte[] memory = new byte[] {
- 0x7c, 8, 2, 0xa6, 0xf8, 1, 0, 0xd0, 0xdb, 0x21, 0, 0x88, 0xdb, 0x41, 0, 0x90,
- 0xdb, 0x61, 0, 0x98, 0xdb, 0x81, 0, 160, 0xdb, 0xa1, 0, 0xa8, 0xdb, 0xc1, 0, 0xb0,
- 0xdb, 0xe1, 0, 0xb8, 0xfb, 0xa1, 0, 0x70, 0xfb, 0xc1, 0, 120, 0xfb, 0xe1, 0, 0x80,
- 0x3d, 0x60, 0x10, 5, 0x80, 0x6b, 0, 0, 0x2c, 3, 0, 0, 0x41, 130, 0, 60,
- 0x80, 0x6b, 0, 8, 0x80, 0x8b, 0, 12, 0x80, 0xab, 0, 0x10, 0x80, 0xcb, 0, 20,
- 0x80, 0xeb, 0, 0x18, 0x81, 11, 0, 0x1c, 0x81, 0x2b, 0, 0x20, 0x81, 0x4b, 0, 0x24,
- 0x81, 0x6b, 0, 40, 0x48, 0, 0, 0x4d, 60, 0x80, 0x10, 5, 0x80, 100, 0, 4,
- 0x38, 160, 0, 0, 0x90, 0xa4, 0, 0, 0xe8, 1, 0, 0xd0, 0x7c, 8, 3, 0xa6,
- 0xcb, 0x21, 0, 0x88, 0xcb, 0x41, 0, 0x90, 0xcb, 0x61, 0, 0x98, 0xcb, 0x81, 0, 160,
- 0xcb, 0xa1, 0, 0xa8, 0xcb, 0xc1, 0, 0xb0, 0xcb, 0xe1, 0, 0xb8, 0xeb, 0xa1, 0, 0x70,
- 0xeb, 0xc1, 0, 120, 0xeb, 0xe1, 0, 0x80, 0x38, 0x21, 0, 0xc0, 0x4e, 0x80, 0, 0x20,
- 0x3d, 0x80, 0x10, 5, 0x81, 140, 0, 0, 0x7c, 8, 2, 0xa6, 0xf8, 1, 0, 0x20,
- 0x7d, 0x89, 3, 0xa6, 0x4e, 0x80, 4, 0x21, 0xe8, 1, 0, 0x20, 0x7c, 8, 3, 0xa6,
- 0x4e, 0x80, 0, 0x20, 0x60, 0, 0, 0
- };
- SetMemory(function_address + 4, memory);
- SetMemory(0x10050000, new byte[0xaac]);
- SetMemory(function_address, new byte[] { 0xf8, 0x21, 0xff, 0x41 });
- }
- public static byte[] GetMemory(uint address, int length)
- {
- byte[] buffer = new byte[length];
- PS3.GetMemory(address, buffer);
- return buffer;
- }
- public static void SetMemory(uint Address, byte[] Bytes)
- {
- PS3.SetMemory(Address, Bytes);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement