Advertisement
PrimeNotorious

[1.18] Black Ops 2: Remote Procedure Calls - Notorious

May 25th, 2014
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.37 KB | None | 0 0
  1.         private static uint rpcFuncAddr = 0x7AA1E0;
  2.         public static int CallFunction(uint rpcFuncAddr, params object[] parameters)
  3.         {
  4.             int length = parameters.Length;
  5.             UInt32 num2 = 0;
  6.             for (uint i = 0; i < length; i++)
  7.             {
  8.                 if (parameters[i] is int)
  9.                 {
  10.                     byte[] array = BitConverter.GetBytes((int)parameters[i]);
  11.                     Array.Reverse(array);
  12.                     PS3.SetMemory(0x10050000 + ((i + num2) * 4), array);
  13.                 }
  14.                 else if (parameters[i] is UInt32)
  15.                 {
  16.                     byte[] buffer2 = BitConverter.GetBytes((uint)parameters[i]);
  17.                     Array.Reverse(buffer2);
  18.                     PS3.SetMemory(0x10050000 + ((i + num2) * 4), buffer2);
  19.                 }
  20.                 else if (parameters[i] is string)
  21.                 {
  22.                     byte[] buffer3 = Encoding.UTF8.GetBytes(Convert.ToString(parameters[i]) + "\0");
  23.                     PS3.SetMemory(0x10050054 + (i * 0x400), buffer3);
  24.                     uint num4 = 0x10050054 + (i * 0x400);
  25.                     byte[] buffer4 = BitConverter.GetBytes(num4);
  26.                     Array.Reverse(buffer4);
  27.                     PS3.SetMemory(0x10050000 + ((i + num2) * 4), buffer4);
  28.                 }
  29.                 else if (parameters[i] is float)
  30.                 {
  31.                     num2++;
  32.                     byte[] buffer5 = BitConverter.GetBytes((float)parameters[i]);
  33.                     Array.Reverse(buffer5);
  34.                     PS3.SetMemory(0x10050024 + ((num2 - 1) * 4), buffer5);
  35.                 }
  36.             }
  37.             byte[] bytes = BitConverter.GetBytes(rpcFuncAddr);
  38.             Array.Reverse(bytes);
  39.             PS3.SetMemory(0x1005004c, bytes);
  40.             System.Threading.Thread.Sleep(20);
  41.             byte[] memory = new byte[4];
  42.             PS3.GetMemory(0x10050050, memory);
  43.             Array.Reverse(memory);
  44.             return BitConverter.ToInt32(memory, 0);
  45.         }
  46.  
  47.         public static void WritePPC()
  48.         {
  49.             PS3.SetMemory(rpcFuncAddr, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
  50.             System.Threading.Thread.Sleep(20);
  51.             byte[] memory = new byte[] {
  52.             0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x60, 0x60, 0x10, 0x05, 0x81, 0x83, 0x00, 0x4C,
  53.             0x2C, 0x12, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08,
  54.             0x80, 0xC3, 0x00, 0x12, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x20, 0x81, 0x23, 0x00, 0x18,
  55.             0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xC0, 0x43, 0x00, 0x40,
  56.             0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xC0, 0xC3, 0x00, 0x38,
  57.             0xC0, 0xE3, 0x00, 0x60, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00,
  58.             0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x60, 0x80, 0x10, 0x05, 0x38, 0xA0, 0x00, 0x00,
  59.             0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x80, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6,
  60.             0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20
  61.          };
  62.             PS3.SetMemory(rpcFuncAddr + 4, memory);
  63.             PS3.SetMemory(0x10050000, new byte[0x2854]);
  64.             PS3.SetMemory(rpcFuncAddr, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
  65.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement