hey,
on your injection point
playerone( UObject:InstanceVariable )
r8 contains (almost)every value in the game ( but you already know that, coz you are using XP as "base" )
RCX = IntProperty of the var
R14 = myGameMode_C Town.Town.PersistentLevel.myGameMode_C_1
R8 = R14 + (RCX+0x44)
as example for money:
RCX = IntProperty myGameMode.myGameMode_C.Money
with the UE4 dumper you can find all the IntPropertys = find all the values in the game(and yes you already have found a lot)
[Link]
little filter for the dump to only get the real IntPropertys:
Code: Select all
StreamReader streamReader = new StreamReader("Dump.txt");
string buffer = "";
bool readnext = true;
while (readnext)
{
buffer = streamReader.ReadLine();
if (buffer == null)
{
readnext = false;
}
if (readnext && buffer.Contains("IntProperty myGameMode.myGameMode"))
{
if (!buffer.Contains("Call") && !buffer.Contains("Event"))
{
Console.WriteLine(buffer);
}
}
}
and you get this:
address +0x44 = offset
so you can find every value without scanning.
if you are search for ByteProperty myGameMode.myGameMode_C then you can find all the flags.
//
okay now better injection point:
(World Town.Town + 0x140) = myGameMode_C Town.Town.PersistentLevel.myGameMode_C_1
script:
Code: Select all
aobscanmodule(aobWorldTown,SuperLife-Win64-Shipping.exe,48 8B 80 40 01 00 00 48 83)
alloc(newmem,$1000,"SuperLife-Win64-Shipping.exe"+11C184E)
label(code)
label(return)
alloc(pMyGameMode,8)
registersymbol(pMyGameMode)
newmem:
code:
mov rax,[rax+00000140]
mov [pMyGameMode],rax
jmp return
aobWorldTown:
jmp newmem
nop 2
return:
registersymbol(aobWorldTown)
[DISABLE]
aobWorldTown:
db 48 8B 80 40 01 00 00
unregistersymbol(aobWorldTown)
dealloc(newmem)
pMyGameMode + 408 = Money
pMyGameMode + 3F0 = EXP
pMyGameMode + 40C = Tokens
pMyGameMode + 3F8 = STR
pMyGameMode + 3F8 = Bank Account Money
and so on, you can all find it with the IntProperty and pMyGameMode as solid base(okay except for the consumeables, they have a own struct)
//
lets say you want the current job:
look for : IntProperty myGameMode.myGameMode_C.CurrentJob
address + 0x44 = offset
pMyGameMode + offset = current job
0 = no job
1 = cashier
and so on