Adresses et Offsets BO3 1.03 + mise à jour toutes versions

Statut
N'est pas ouverte pour d'autres réponses.
tien :
RPC :
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PS3Lib;
using System.Threading;
using Project_Ade;

namespace Super_Mini_Tool
{
    class RPC
    {


        public static byte[] ReverseBytes(byte[] toReverse)
        {
            Array.Reverse(toReverse);
            return toReverse;
        }

        public static void WriteFloatArray(UInt32 address, float[] input)
        {
            int length = input.Length;
            byte[] array = new byte[length * 4];
            for (int i = 0; i < length; i++)
            {
                ReverseBytes(BitConverter.GetBytes(input[i])).CopyTo(array, (int)(i * 4));
            }
            Form1.Mark.SetMemory(address, array);
        }

        public static uint RPCMemoryAddress = 0;

        public static void Enable(uint AddressToStorePPC, uint RPCMemoryPointerAddress)
        {
            RPCMemoryAddress = RPCMemoryPointerAddress;
            Form1.Mark.SetMemory(RPCMemoryPointerAddress, new byte[0x3000]);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC, 0x3CE408);
            Thread.Sleep(20);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 4, 0x7C0802A6);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 8, 0xF8010080);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0xC, 0x3F800000 + ((RPCMemoryPointerAddress >> 16) & 0xFFFF));
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x10, 0x819C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x48);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x14, 0x2C0C0000);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x18, 0x41820060);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x1C, 0x807C0000 + (RPCMemoryPointerAddress & 0xFFFF));
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x20, 0x809C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 4);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x24, 0x80BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 8);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x28, 0x80DC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0xC);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x2C, 0x80FC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x10);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x30, 0x811C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x14);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x34, 0x813C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x18);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x38, 0x815C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x1C);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x3C, 0x817C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x20);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x40, 0xC03C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x24);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x44, 0xC05C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x28);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x48, 0xC07C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x2C);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x4C, 0xC09C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x30);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x50, 0xC0BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x34);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x54, 0xC0DC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x38);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x58, 0xC0FC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x3C);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x5C, 0xC11C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x40);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x60, 0xC13C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x44);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x64, 0x7D8903A6);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x68, 0x4E800421);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x6C, 0x38A00000);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x70, 0x90BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x48);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x74, 0x907C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x4C);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x78, 0xE8010080);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x7C, 0x7C0803A6);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x80, 0x38210070);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC + 0x84, 0x4E800020);
            Form1.Mark.Extension.WriteUInt32(AddressToStorePPC, 0xF821FF91);
        }
        public static void Cbuf_AddText(int client, string command)
        {
            UInt32 Cbuf = 0x5A512C;
            RPC.CallFunction(Cbuf, client, command);
        }
        public static void SV_GameSendServerCommand(int client, string command)
        {
            RPC.CallFunction(0x5DEC94, client, 0, command + "\"");
        }
        public static void iPrintln(int client, string text)
        {
            SV_GameSendServerCommand(client, "e \"" + text + "\"");
        }
        public static int CallFunction(uint Address, params object[] Parameters)
        {
            uint num3 = 0, num4 = 0, num5 = 0, num6 = 0, index = 0;
            Form1.Mark.Extension.WriteUInt32(RPCMemoryAddress + 0x48, Address);
            while (index < Parameters.Length)
            {
                if (Parameters[index] is int)
                {
                    Form1.Mark.Extension.WriteInt32(RPCMemoryAddress + (num3 * 4), (int)Parameters[index]);
                    num3++;
                }
                else if (Parameters[index] is uint)
                {
                    Form1.Mark.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), (uint)Parameters[index]);
                    num3++;
                }
                else if (Parameters[index] is string)
                {
                    Form1.Mark.Extension.WriteString(RPCMemoryAddress + 0x2000 + (num4 * 0x400), Convert.ToString(Parameters[index]));
                    Form1.Mark.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), RPCMemoryAddress + 0x2000 + (num4 * 0x400));
                    num3++;
                    num4++;
                }
                else if (Parameters[index] is float)
                {
                    Form1.Mark.Extension.WriteFloat(RPCMemoryAddress + 0x24 + (num5 * 4), (float)Parameters[index]);
                    num5++;
                }
                else if (Parameters[index] is float[])
                {
                    float[] input = (float[])Parameters[index];
                    WriteFloatArray(RPCMemoryAddress + 0x1000 + (num6 * 4), input);
                    Form1.Mark.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), RPCMemoryAddress + 0x1000 + (num6 * 4));
                    num3++;
                    num6 += (uint)input.Length;
                }
                index++;
            }
            return Form1.Mark.Extension.ReadInt32(RPCMemoryAddress + 0x4C);
        }

        internal static void Call(object cbuf_AddText, object[] v)
        {
            throw new NotImplementedException();
        }
    }
}

Force Host :

Code:
 RPC.Cbuf_AddText(0, "partyMigrate_disabled 1");
            RPC.Cbuf_AddText(0, "party_minplayers 1");
            RPC.Cbuf_AddText(0, "allowAllNAT 1");
            RPC.Cbuf_AddText(0, "party_connectToOthers 0");
Fonctionnel?
 
RPC.Enable(Variables.function_address, 0x10070000); // Variables.function_address = R_SetFrameFog = 0x3CE408
and for, for example iprint ?

Code:
RPC.Enable(0x5A512C, 0x10070000);
            RPC.iPrintln(0, "Test");
 
:mmh: , pour faire les mode en zombie, faut faire un RPC avant où on peux le faire comme ça ? :mmh:
Question conne, mais je sais pas faire ça (d) !
 
RPC :
Code:
public class RPCLib
        {
            
            public RPCLib(UInt32 FunctionAddress = 0x3CB3A0)
            {
                Function_Address = FunctionAddress;
            }
            public UInt32 Function_Address { get; set; }
            public void EnableRPC()
            {
                PS3.SetMemory(Function_Address, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
                System.Threading.Thread.Sleep(20);
                byte[] func = new byte[] { 0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x3C, 0x60, 0x10, 0x05, 0x81, 0x83, 0x00, 0x4C, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08, 0x80, 0xC3, 0x00, 0x0C, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x14, 0x81, 0x23, 0x00, 0x18, 0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xC0, 0x43, 0x00, 0x28, 0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xC0, 0xC3, 0x00, 0x38, 0xC0, 0xE3, 0x00, 0x3C, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x80, 0x10, 0x05, 0x38, 0xA0, 0x00, 0x00, 0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x50, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6, 0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20 };
                PS3.SetMemory(Function_Address + 0x4, func);
                PS3.SetMemory(0x10050000, new byte[0x2854]);
                PS3.SetMemory(Function_Address, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
            }
            public Int32 Call(UInt32 Address, params Object[] MemoryParams)
            {
                int num_params = MemoryParams.Length;
                uint num_floats = 0;
                for (uint i = 0; i < num_params; i++)
                {
                    if (MemoryParams[i] is int)
                    {
                        byte[] val = BitConverter.GetBytes((int)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                    }
                    else if (MemoryParams[i] is uint)
                    {
                        byte[] val = BitConverter.GetBytes((uint)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                    }
                    else if (MemoryParams[i] is string)
                    {
                        byte[] str = Encoding.UTF8.GetBytes(Convert.ToString(MemoryParams[i]) + "\0");
                        PS3.SetMemory(0x10050054 + i * 0x400, str);
                        uint addr = 0x10050054 + i * 0x400;
                        byte[] address = BitConverter.GetBytes(addr);
                        Array.Reverse(address);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, address);
                    }
                    else if (MemoryParams[i] is float)
                    {
                        num_floats++;
                        byte[] val = BitConverter.GetBytes((float)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050024 + ((num_floats - 1) * 0x4), val);
                    }
                }
                byte[] fadd = BitConverter.GetBytes(Address);
                Array.Reverse(fadd);
                PS3.SetMemory(0x1005004C, fadd);
                System.Threading.Thread.Sleep(20);
                byte[] ret = PS3.Extension.ReadBytes(0x10050050, 4);
                Array.Reverse(ret);
                return BitConverter.ToInt32(ret, 0);
            }
            public void Cbuf_AddText(String Command)
            {
                Call(0x59E79C, 0, Command);
            }
            public void iPrintlnBold(String Message)
            {
                Call(0x1079F8, 0, Message);
            }
        }
 
:mmh: , pour faire les mode en zombie, faut faire un RPC avant où on peux le faire comme ça ? :mmh:
Question conne, mais je sais pas faire ça (d) !
Sa depends de se que tu veux faire comme mods :ok:
 
Bas godmode / Mun ect c'est avec les Offsets

Je me doute bien (d)
Mais c'est comment te dire, que c'est la première fois que je veux faire ce type de chose comme ça :S! J'ai toujours fais que des " tool " genre stats ect (d) :mmh:
 
RPC :
Code:
public class RPCLib
        {
           
            public RPCLib(UInt32 FunctionAddress = 0x3CB3A0)
            {
                Function_Address = FunctionAddress;
            }
            public UInt32 Function_Address { get; set; }
            public void EnableRPC()
            {
                PS3.SetMemory(Function_Address, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
                System.Threading.Thread.Sleep(20);
                byte[] func = new byte[] { 0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x3C, 0x60, 0x10, 0x05, 0x81, 0x83, 0x00, 0x4C, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08, 0x80, 0xC3, 0x00, 0x0C, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x14, 0x81, 0x23, 0x00, 0x18, 0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xC0, 0x43, 0x00, 0x28, 0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xC0, 0xC3, 0x00, 0x38, 0xC0, 0xE3, 0x00, 0x3C, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x80, 0x10, 0x05, 0x38, 0xA0, 0x00, 0x00, 0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x50, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6, 0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20 };
                PS3.SetMemory(Function_Address + 0x4, func);
                PS3.SetMemory(0x10050000, new byte[0x2854]);
                PS3.SetMemory(Function_Address, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
            }
            public Int32 Call(UInt32 Address, params Object[] MemoryParams)
            {
                int num_params = MemoryParams.Length;
                uint num_floats = 0;
                for (uint i = 0; i < num_params; i++)
                {
                    if (MemoryParams[i] is int)
                    {
                        byte[] val = BitConverter.GetBytes((int)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                    }
                    else if (MemoryParams[i] is uint)
                    {
                        byte[] val = BitConverter.GetBytes((uint)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                    }
                    else if (MemoryParams[i] is string)
                    {
                        byte[] str = Encoding.UTF8.GetBytes(Convert.ToString(MemoryParams[i]) + "\0");
                        PS3.SetMemory(0x10050054 + i * 0x400, str);
                        uint addr = 0x10050054 + i * 0x400;
                        byte[] address = BitConverter.GetBytes(addr);
                        Array.Reverse(address);
                        PS3.SetMemory(0x10050000 + (i + num_floats) * 4, address);
                    }
                    else if (MemoryParams[i] is float)
                    {
                        num_floats++;
                        byte[] val = BitConverter.GetBytes((float)MemoryParams[i]);
                        Array.Reverse(val);
                        PS3.SetMemory(0x10050024 + ((num_floats - 1) * 0x4), val);
                    }
                }
                byte[] fadd = BitConverter.GetBytes(Address);
                Array.Reverse(fadd);
                PS3.SetMemory(0x1005004C, fadd);
                System.Threading.Thread.Sleep(20);
                byte[] ret = PS3.Extension.ReadBytes(0x10050050, 4);
                Array.Reverse(ret);
                return BitConverter.ToInt32(ret, 0);
            }
            public void Cbuf_AddText(String Command)
            {
                Call(0x59E79C, 0, Command);
            }
            public void iPrintlnBold(String Message)
            {
                Call(0x1079F8, 0, Message);
            }
        }
Fonctionnel?
 
j'ai testé avec les RPC de mes différents tools en modifiant bien entendu les adresses, ne fonctionnent pas
 
Je me doute bien (d)
Mais c'est comment te dire, que c'est la première fois que je veux faire ce type de chose comme ça :S! J'ai toujours fais que des " tool " genre stats ect (d) :mmh:
Je t'avoue que je comprends pas trop ta question, tu veux faire quoi exactement
 
Je t'avoue que je comprends pas trop ta question, tu veux faire quoi exactement

Enft j'suis débutant stv
Et je sais pas trop comment m'y prendre pour faire tout ce qui est MODE zombie ect ^^ :blush:
 
j'ai testé aussi celui de @SC58
  1. class RPC
  2. {
  3. private static PS3API PS3 = new PS3API();

  4. public static byte[] ReverseBytes(byte[] toReverse)
  5. {
  6. Array.Reverse(toReverse);
  7. return toReverse;
  8. }

  9. public static void WriteFloatArray(UInt32 address, float[] input)
  10. {
  11. int length = input.Length;
  12. byte[] array = new byte[length * 4];
  13. for (int i = 0; i < length; i++)
  14. {
  15. ReverseBytes(BitConverter.GetBytes(input)).CopyTo(array, (int)(i * 4));
    [*] }
    [*] PS3.SetMemory(address, array);
    [*] }
    [*]

    [*] public static uint RPCMemoryAddress = 0;
    [*]

    [*] public static void Enable(uint AddressToStorePPC, uint RPCMemoryPointerAddress)
    [*] {
    [*] RPCMemoryAddress = RPCMemoryPointerAddress;
    [*] PS3.SetMemory(RPCMemoryPointerAddress, new byte[0x3000]);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC, 0x4E800020);
    [*] Thread.Sleep(20);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 4, 0x7C0802A6);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 8, 0xF8010080);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0xC, 0x3F800000 + ((RPCMemoryPointerAddress >> 16) & 0xFFFF));
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x10, 0x819C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x48);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x14, 0x2C0C0000);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x18, 0x41820060);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x1C, 0x807C0000 + (RPCMemoryPointerAddress & 0xFFFF));
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x20, 0x809C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 4);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x24, 0x80BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 8);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x28, 0x80DC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0xC);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x2C, 0x80FC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x10);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x30, 0x811C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x14);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x34, 0x813C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x18);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x38, 0x815C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x1C);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x3C, 0x817C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x20);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x40, 0xC03C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x24);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x44, 0xC05C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x28);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x48, 0xC07C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x2C);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x4C, 0xC09C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x30);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x50, 0xC0BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x34);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x54, 0xC0DC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x38);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x58, 0xC0FC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x3C);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x5C, 0xC11C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x40);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x60, 0xC13C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x44);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x64, 0x7D8903A6);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x68, 0x4E800421);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x6C, 0x38A00000);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x70, 0x90BC0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x48);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x74, 0x907C0000 + (RPCMemoryPointerAddress & 0xFFFF) + 0x4C);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x78, 0xE8010080);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x7C, 0x7C0803A6);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x80, 0x38210070);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC + 0x84, 0x4E800020);
    [*] PS3.Extension.WriteUInt32(AddressToStorePPC, 0xF821FF91);
    [*] }
    [*]

    [*] public static int CallFunction(uint Address, params object[] Parameters)
    [*] {
    [*] uint num3 = 0, num4 = 0, num5 = 0, num6 = 0, index = 0;
    [*] PS3.Extension.WriteUInt32(RPCMemoryAddress + 0x48, Address);
    [*] while (index < Parameters.Length)
    [*] {
    [*] if (Parameters[index] is int)
    [*] {
    [*] PS3.Extension.WriteInt32(RPCMemoryAddress + (num3 * 4), (int)Parameters[index]);
    [*] num3++;
    [*] }
    [*] else if (Parameters[index] is uint)
    [*] {
    [*] PS3.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), (uint)Parameters[index]);
    [*] num3++;
    [*] }
    [*] else if (Parameters[index] is string)
    [*] {
    [*] PS3.Extension.WriteString(RPCMemoryAddress + 0x2000 + (num4 * 0x400), Convert.ToString(Parameters[index]));
    [*] PS3.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), RPCMemoryAddress + 0x2000 + (num4 * 0x400));
    [*] num3++;
    [*] num4++;
    [*] }
    [*] else if (Parameters[index] is float)
    [*] {
    [*] PS3.Extension.WriteFloat(RPCMemoryAddress + 0x24 + (num5 * 4), (float)Parameters[index]);
    [*] num5++;
    [*] }
    [*] else if (Parameters[index] is float[])
    [*] {
    [*] float[] input = (float[])Parameters[index];
    [*] WriteFloatArray(RPCMemoryAddress + 0x1000 + (num6 * 4), input);
    [*] PS3.Extension.WriteUInt32(RPCMemoryAddress + (num3 * 4), RPCMemoryAddress + 0x1000 + (num6 * 4));
    [*] num3++;
    [*] num6 += (uint)input.Length;
    [*] }
    [*] index++;
    [*] }
    [*] return PS3.Extension.ReadInt32(RPCMemoryAddress + 0x4C);
    [*] }
    [*] }

en modifiant le RPCMemoryAddress, mais non fonctionnel, il doit y avoir une autre adresse à modifier, sans doute celle-là: AddressToStorePPC, 0xF821FF91
 
j'ai testé avec les RPC de mes différents tools en modifiant bien entendu les adresses, ne fonctionnent pas

J'utilise se RPC, il fonctionne très bien:
Pour Enable le RPC: Init();

Code:
public static uint function_address = Offsets.R_SetFrameFog;

        public static int Init()
        {
            if (function_address == 0) return -1;
            Enable_RPC();
            return 0;
        }

        public static void Enable_RPC()
        {
            PS3.SetMemory(function_address, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
            System.Threading.Thread.Sleep(20);
            byte[] func = new byte[] { 0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x3C, 0x60, 0x10, 0x05, 0x81, 0x83, 0x00, 0x4C, 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08, 0x80, 0xC3, 0x00, 0x0C, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x14, 0x81, 0x23, 0x00, 0x18, 0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xC0, 0x43, 0x00, 0x28, 0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xC0, 0xC3, 0x00, 0x38, 0xC0, 0xE3, 0x00, 0x3C, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00, 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x80, 0x10, 0x05, 0x38, 0xA0, 0x00, 0x00, 0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x50, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6, 0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20 };
            PS3.SetMemory(function_address + 0x4, func);
            PS3.SetMemory(0x10050000, new byte[0x2854]);
            PS3.SetMemory(function_address, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
        }

        public static int Call(uint func_address, params object[] parameters)
        {
            int num_params = parameters.Length;
            uint num_floats = 0;
            for (uint i = 0; i < num_params; i++)
            {
                if (parameters[i] is int)
                {
                    byte[] val = BitConverter.GetBytes((int)parameters[i]);
                    Array.Reverse(val);
                    PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                }
                else if (parameters[i] is uint)
                {
                    byte[] val = BitConverter.GetBytes((uint)parameters[i]);
                    Array.Reverse(val);
                    PS3.SetMemory(0x10050000 + (i + num_floats) * 4, val);
                }
                else if (parameters[i] is string)
                {
                    byte[] str = Encoding.UTF8.GetBytes(Convert.ToString(parameters[i]) + "\0");
                    PS3.SetMemory(0x10050054 + i * 0x400, str);
                    uint addr = 0x10050054 + i * 0x400;
                    byte[] address = BitConverter.GetBytes(addr);
                    Array.Reverse(address);
                    PS3.SetMemory(0x10050000 + (i + num_floats) * 4, address);
                }
                else if (parameters[i] is float)
                {
                    num_floats++;
                    byte[] val = BitConverter.GetBytes((float)parameters[i]);
                    Array.Reverse(val);
                    PS3.SetMemory(0x10050024 + ((num_floats - 1) * 0x4), val);
                }
            }
            byte[] fadd = BitConverter.GetBytes(func_address);
            Array.Reverse(fadd);
            PS3.SetMemory(0x1005004C, fadd);
            System.Threading.Thread.Sleep(20);
            byte[] ret = PS3.Extension.ReadBytes(0x10050050, 4);
            Array.Reverse(ret);
            return BitConverter.ToInt32(ret, 0);
        }
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut