public static byte[] BIND = new byte[4];
public static uint ProcessID;
public static uint[] processIDs;
private static string usage;
public static PS3TMAPI.ConnectStatus connectStatus;
public static string Status;
public static void Connect()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}
public static void AttachProcess()
{
PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
}
public static void GetStatus()
{
Status = Convert.ToString(PS3TMAPI.GetConnectStatus(0, out connectStatus, out usage));
}
public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}
public static void GetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref Bytes);
}
}
public static byte[] BIND = new byte[4];
public static uint ProcessID;
public static uint[] processIDs;
private static string usage;
public static PS3TMAPI.ConnectStatus connectStatus;
public static string Status;
public static void Connect()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}
public static void AttachProcess()
{
PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
}
public static void GetStatus()
{
Status = Convert.ToString(PS3TMAPI.GetConnectStatus(0, out connectStatus, out usage));
}
public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}
public static void GetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref Bytes);
}
}
#region RPC //-- CEX/DEX - 1.09
private static class RPC
{
private static uint function_address = 0x0049C140;
public static int Call(uint func_address, params object[] parameters)
{
int length = parameters.Length;
uint num2 = 0;
for (uint i = 0; i < length; i++)
{
byte[] buffer;
if (parameters[i] is int)
{
buffer = BitConverter.GetBytes((int) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050000 + ((i + num2)*4), buffer);
}
else if (parameters[i] is uint)
{
buffer = BitConverter.GetBytes((uint) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050000 + ((i + num2)*4), buffer);
}
else if (parameters[i] is string)
{
byte[] buffer2 = Encoding.UTF8.GetBytes(Convert.ToString(parameters[i]) + "\0");
CEX.SetMemory(0x10050054 + (i*0x400), buffer2);
uint num4 = 0x10050054 + (i*0x400);
byte[] array = BitConverter.GetBytes(num4);
Array.Reverse(array);
CEX.SetMemory(0x10050000 + ((i + num2)*4), array);
}
else if (parameters[i] is float)
{
num2++;
buffer = BitConverter.GetBytes((float) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050024 + ((num2 - 1)*4), buffer);
}
}
byte[] bytes = BitConverter.GetBytes(func_address);
Array.Reverse(bytes);
CEX.SetMemory(0x1005004C, bytes);
System.Threading.Thread.Sleep(20);
byte[] buffer5 = new byte[4];
CEX.GetMemory(0x10050050, buffer5);
Array.Reverse(buffer5);
return BitConverter.ToInt32(buffer5, 0);
}
public static void Write_RPC()
{
CEX.SetMemory(function_address, new byte[] {0x4e, 0x80, 0, 0x20});
Thread.Sleep(20);
byte[] buffer = new byte[]
{
0x7c, 8, 2, 0xa6, 0xf8, 1, 0, 0x80, 60, 0x60, 0x10, 5, 0x81, 0x83, 0, 0x4c, 0x2c, 12, 0, 0, 0x41,
130, 0,
100, 0x80, 0x83, 0, 4, 0x80, 0xa3, 0, 8,
0x80, 0xc3, 0, 12, 0x80, 0xe3, 0, 0x10, 0x81, 3, 0, 20, 0x81, 0x23, 0, 0x18,
0x81, 0x43, 0, 0x1c, 0x81, 0x63, 0, 0x20, 0xc0, 0x23, 0, 0x24, 0xc0, 0x43, 0, 40, 0xc0, 0x63, 0,
0x2c,
0xc0, 0x83, 0, 0x30, 0xc0, 0xa3, 0, 0x34, 0xc0, 0xc3, 0, 0x38,
0xc0, 0xe3, 0, 60, 0xc1, 3, 0, 0x40, 0xc1, 0x23, 0, 0x48, 0x80, 0x63, 0, 0, 0x7d, 0x89, 3, 0xa6,
0x4e,
0x80, 4, 0x21, 60, 0x80, 0x10, 5, 0x38, 160, 0, 0,
0x90, 0xa4, 0, 0x4c, 0x80, 100, 0, 80, 0xe8, 1, 0, 0x80, 0x7c, 8, 3, 0xa6, 0x38, 0x21, 0, 0x70, 0x4e,
0x80, 0, 0x20
};
CEX.SetMemory(function_address + 4, buffer);
CEX.SetMemory(0x10050000, new byte[0x2854]);
CEX.SetMemory(function_address, new byte[] {0xf8, 0x21, 0xff, 0x91});
}
}
#endregion
#region RPC //-- CEX/DEX - 1.09
private static class RPC
{
private static uint function_address = 0x0049C140;
public static int Call(uint func_address, params object[] parameters)
{
int length = parameters.Length;
uint num2 = 0;
for (uint i = 0; i < length; i++)
{
byte[] buffer;
if (parameters[i] is int)
{
buffer = BitConverter.GetBytes((int) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050000 + ((i + num2)*4), buffer);
}
else if (parameters[i] is uint)
{
buffer = BitConverter.GetBytes((uint) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050000 + ((i + num2)*4), buffer);
}
else if (parameters[i] is string)
{
byte[] buffer2 = Encoding.UTF8.GetBytes(Convert.ToString(parameters[i]) + "\0");
CEX.SetMemory(0x10050054 + (i*0x400), buffer2);
uint num4 = 0x10050054 + (i*0x400);
byte[] array = BitConverter.GetBytes(num4);
Array.Reverse(array);
CEX.SetMemory(0x10050000 + ((i + num2)*4), array);
}
else if (parameters[i] is float)
{
num2++;
buffer = BitConverter.GetBytes((float) parameters[i]);
Array.Reverse(buffer);
CEX.SetMemory(0x10050024 + ((num2 - 1)*4), buffer);
}
}
byte[] bytes = BitConverter.GetBytes(func_address);
Array.Reverse(bytes);
CEX.SetMemory(0x1005004C, bytes);
System.Threading.Thread.Sleep(20);
byte[] buffer5 = new byte[4];
CEX.GetMemory(0x10050050, buffer5);
Array.Reverse(buffer5);
return BitConverter.ToInt32(buffer5, 0);
}
public static void Write_RPC()
{
CEX.SetMemory(function_address, new byte[] {0x4e, 0x80, 0, 0x20});
Thread.Sleep(20);
byte[] buffer = new byte[]
{
0x7c, 8, 2, 0xa6, 0xf8, 1, 0, 0x80, 60, 0x60, 0x10, 5, 0x81, 0x83, 0, 0x4c, 0x2c, 12, 0, 0, 0x41,
130, 0,
100, 0x80, 0x83, 0, 4, 0x80, 0xa3, 0, 8,
0x80, 0xc3, 0, 12, 0x80, 0xe3, 0, 0x10, 0x81, 3, 0, 20, 0x81, 0x23, 0, 0x18,
0x81, 0x43, 0, 0x1c, 0x81, 0x63, 0, 0x20, 0xc0, 0x23, 0, 0x24, 0xc0, 0x43, 0, 40, 0xc0, 0x63, 0,
0x2c,
0xc0, 0x83, 0, 0x30, 0xc0, 0xa3, 0, 0x34, 0xc0, 0xc3, 0, 0x38,
0xc0, 0xe3, 0, 60, 0xc1, 3, 0, 0x40, 0xc1, 0x23, 0, 0x48, 0x80, 0x63, 0, 0, 0x7d, 0x89, 3, 0xa6,
0x4e,
0x80, 4, 0x21, 60, 0x80, 0x10, 5, 0x38, 160, 0, 0,
0x90, 0xa4, 0, 0x4c, 0x80, 100, 0, 80, 0xe8, 1, 0, 0x80, 0x7c, 8, 3, 0xa6, 0x38, 0x21, 0, 0x70, 0x4e,
0x80, 0, 0x20
};
CEX.SetMemory(function_address + 4, buffer);
CEX.SetMemory(0x10050000, new byte[0x2854]);
CEX.SetMemory(function_address, new byte[] {0xf8, 0x21, 0xff, 0x91});
}
}
#endregion

public static byte[] BIND = new byte[4];
public static uint ProcessID;
public static uint[] processIDs;
private static string usage;
public static PS3TMAPI.ConnectStatus connectStatus;
public static string Status;
public static void Connect()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}
public static void AttachProcess()
{
PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
}
public static void GetStatus()
{
Status = Convert.ToString(PS3TMAPI.GetConnectStatus(0, out connectStatus, out usage));
}
public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}
public static void GetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref Bytes);
}
}
public static byte[] BIND = new byte[4];
public static uint ProcessID;
public static uint[] processIDs;
private static string usage;
public static PS3TMAPI.ConnectStatus connectStatus;
public static string Status;
public static void Connect()
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
}
public static void AttachProcess()
{
PS3TMAPI.GetProcessList(0, out processIDs);
ulong uProcess = processIDs[0];
ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID);
PS3TMAPI.ProcessContinue(0, ProcessID);
}
public static void GetStatus()
{
Status = Convert.ToString(PS3TMAPI.GetConnectStatus(0, out connectStatus, out usage));
}
public static void SetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, Bytes);
}
public static void GetMemory(uint Address, byte[] Bytes)
{
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Address, ref Bytes);
}
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.