
const WCHAR * dllName = L"ps3tmapi.dll";
HINSTANCE hlib = LoadLibrary(dllName);
typedef int(__cdecl *InitTargetCommsFunction)(void);
typedef int(__cdecl *ConnectFunction)(int, LPWSTR);
typedef int(__cdecl *DisconnectFunction)(int);
typedef int(__cdecl *ProcessListFunction)(int, UINT32*, UINT32*);
typedef int(__cdecl *ProcessAttachFunction)(int, UINT32, UINT32);
typedef int(__cdecl *ProcessContinueFunction) (int, UINT32);
typedef int(__cdecl *ProcessSetMemoryFunction)(int, UINT32, UINT32, UINT64, UINT64, int, BYTE*);
typedef int(__cdecl *ProcessGetMemoryFunction)(int, UINT32, UINT32, UINT64, UINT64, int, BYTE*);
InitTargetCommsFunction InitTargetComms = (InitTargetCommsFunction)GetProcAddress(hlib, "SNPS3InitTargetComms");
ConnectFunction ProcConnectTarget = (ConnectFunction)GetProcAddress(hlib, "SNPS3Connect");
DisconnectFunction ProcDisconnectTarget = (DisconnectFunction)GetProcAddress(hlib, "SNPS3Disconnect");
ProcessListFunction ProcProcessList = (ProcessListFunction)GetProcAddress(hlib, "SNPS3ProcessList");
ProcessAttachFunction ProcProcessAttach = (ProcessAttachFunction)GetProcAddress(hlib, "SNPS3ProcessAttach");
ProcessContinueFunction ProcProcessContinue = (ProcessContinueFunction)GetProcAddress(hlib, "SNPS3ProcessContinue");
ProcessGetMemoryFunction ProcGetMemory = (ProcessGetMemoryFunction)GetProcAddress(hlib, "SNPS3ProcessGetMemory");
ProcessSetMemoryFunction ProcSetMemory = (ProcessSetMemoryFunction)GetProcAddress(hlib, "SNPS3ProcessSetMemory");
INT32 Target = 0xFFFFFFFE;
UINT32 puCount[32];
UINT32 ProcessID;
static void ConnectTarget()
{
try
{
InitTargetComms();
ProcConnectTarget(Target, NULL);
MessageBox(0, L"Succesfully conncted to Dev-Kit", L"Success", MB_OK || MB_ICONINFORMATION);
}
catch (...)
{
MessageBox(0, L"Error while connecting to Dev-Kit", L"Error", MB_OK || MB_ICONSTOP);
}
}
static void Attach()
{
try
{
ProcProcessList(Target, puCount, &ProcessID);
ProcProcessAttach(Target, 0, ProcessID);
ProcProcessContinue(Target, ProcessID);
MessageBox(0, L"Succesfully attached your game", L"Success", MB_OK || MB_ICONINFORMATION);
}
catch (...)
{
MessageBox(0, L"Error while attaching your game", L"Error", MB_OK || MB_ICONSTOP);
}
}
static void SetMemory(UINT32 Address, BYTE *bytes, int sizeOfArray)
{
InitTargetComms();
ProcSetMemory(Target, 0, ProcessID, 0, Address, sizeOfArray, bytes);
}
static BYTE* GetMemory(UINT32 Address, INT32 Length)
{
InitTargetComms();
BYTE* ret = new BYTE[Length];
ProcGetMemory(Target, 0, ProcessID, 0, Address, Length, ret);
return ret;
}
static signed char ReadSByte(UINT32 Address)
{
return (signed char)GetMemory(Address, 1)[0];
}
static BYTE ReadByte(UINT32 Address)
{
return (BYTE)GetMemory(Address, 1)[0];
}
static bool ReadBool(UINT32 Address)
{
return GetMemory(Address, 1)[0] != 0;
}
static INT16 ReadInt16(UINT32 Address)
{
BYTE* read = GetMemory(Address, 2);
std::reverse(read, read + 2);
return *(INT16*)read;
}
static INT32 ReadInt32(UINT32 Address)
{
BYTE* read = GetMemory(Address, 4);
std::reverse(read, read + 4);
return *(INT32*)read;
}
static INT64 ReadInt64(UINT64 Address)
{
BYTE* read = GetMemory(Address,
;
std::reverse(read, read +
;
return *(INT64*)read;
}
static UINT16 ReadUInt16(UINT32 Address)
{
BYTE* read = GetMemory(Address, 2);
std::reverse(read, read + 2);
return *(UINT16*)read;
}
static UINT32 ReadUInt32(UINT32 Address)
{
BYTE* read = GetMemory(Address, 4);
std::reverse(read, read + 4);
return *(UINT32*)read;
}
static UINT64 ReadUInt64(UINT32 Address)
{
BYTE* read = GetMemory(Address,
;
std::reverse(read, read +
;
return *(UINT64*)read;
}
static FLOAT ReadFloat(UINT32 Address)
{
BYTE* read = GetMemory(Address, 4);
std::reverse(read, read + 4);
return *(FLOAT*)read;
}
static DOUBLE ReadDouble(UINT32 Address)
{
BYTE* read = GetMemory(Address,
;
std::reverse(read, read +
;
return *(DOUBLE*)read;
}
static void WriteByte(UINT32 Address, BYTE input)
{
BYTE bytes[] = { input };
SetMemory(Address, bytes, 1);
}
static void WriteSByte(UINT32 Address, signed char input)
{
BYTE bytes[] = { input };
SetMemory(Address, bytes, 1);
}
static void WriteBool(UINT32 Address, bool input)
{
BYTE bytes[] = { input };
bytes[0] = input ? (BYTE)1 : (BYTE)0;
SetMemory(Address, bytes, 1);
}
static void WriteInt16(UINT32 Address, INT16 input)
{
BYTE bytes[2];
*(INT16*)bytes = input;
std::reverse(bytes, bytes + 2);
SetMemory(Address, bytes, 2);
}
static void WriteInt32(UINT32 Address, INT32 input)
{
BYTE bytes[4];
*(INT32*)bytes = input;
std::reverse(bytes, bytes + 4);
SetMemory(Address, bytes, 4);
}
static void WriteInt64(UINT32 Address, INT64 input)
{
BYTE bytes[8];
*(INT64*)bytes = input;
std::reverse(bytes, bytes +
;
SetMemory(Address, bytes,
;
}
static void WriteUInt16(UINT32 Address, UINT16 input)
{
BYTE bytes[2];
*(UINT16*)bytes = input;
std::reverse(bytes, bytes + 2);
SetMemory(Address, bytes, 2);
}
static void WriteUInt32(UINT32 Address, UINT32 input)
{
BYTE bytes[4];
*(UINT32*)bytes = input;
std::reverse(bytes, bytes + 4);
SetMemory(Address, bytes, 4);
}
static void WriteUInt64(UINT32 Address, UINT64 input)
{
BYTE bytes[8];
*(UINT64*)bytes = input;
std::reverse(bytes, bytes +
;
SetMemory(Address, bytes,
;
}
static void WriteFloat(UINT32 Address, float input)
{
BYTE bytes[4];
*(float*)bytes = input;
std::reverse(bytes, bytes + 4);
SetMemory(Address, bytes, 4);
}
static void WriteDouble(UINT32 Address, DOUBLE input)
{
BYTE bytes[8];
*(DOUBLE*)bytes = input;
std::reverse(bytes, bytes +
;
SetMemory(Address, bytes,
;
}
static void WriteString(UINT32 Address, std::string text)
{
SetMemory(Address, (BYTE*)text.c_str(), text.length() + 1);
}
static bool CompareByteArray(BYTE* a, BYTE* b, INT32 ArrayLength)
{
INT32 CheckArray = 0;
for (INT32 i = 0; i < ArrayLength; i++)
if (a[i] == b[i])
CheckArray++;
return CheckArray == ArrayLength;
}
static std::string ReadString(UINT32 Address, INT32 Length)
{
return (reinterpret_cast<const char*>(GetMemory(Address, Length)));
}



int (*InitTargetCommsFunction)() = (int(__cdecl*)())GetProcAddress(LoadLibary(L"ps3tmapi.dll"), "SNPS3InitTargetComms");
char*readString(int address, int length)
{
return (char*)GetMemory(address, length);
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.