View previous topic :: View next topic |
Author |
Message |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 9:03 am Post subject: Help with making table |
|
|
Hello
I am sorry if this is wrong place to ask or if it is mentioned in other topic.
So my problem is that I want to create table for game that is made in RAGS engine. When I found right address and selected "Find out what accesses this address" and save one of opcodes (that is every time same) to codelist. Now when I select it in codelist and select "Find out what addresses this code reads from" it shows me 5 addresses.
The question is, can I somehow make it in to table? I need all 5 addresses, they are for different things with similar values. It is not hard to copy them but some are same at start so it will help greatly if they are already in table with names...
|
|
Back to top |
|
 |
cooleko Grandmaster Cheater
Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jul 08, 2016 9:35 am Post subject: |
|
|
What do you want to do with the 5 addresses?
If you want to change all 5 of them to a specified value then use an aobscan and add an instruction to set the address to that specified value.
If you want to allow a user to see some values relating to the addresses and you know that it will always be 5 addresses, then you can globalalloc 5 "variables" and cmp var1,0; jne var2test; cmp var2,0; jne var3test .... Then, in the table, simply have pointers referencing each of the 5 addresses.
If you want to allow the user to see some values relating to the addresses, but you have no idea how many it will be, then you need to use lua to create a new entry for each new address. keep a table of addresses, if a new one appears (aka not in the table already) then you add a new memory record (createMemoryRecord()). There are many posts around which describe this process as well as how to keep a list of all MRs for deletion afterwards.
If you want to do something else, then tell us already, we cant read your mind!
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 9:42 am Post subject: |
|
|
I want to be able change those value at will. They are: Week, Day, Energy, Money, Reputation all of them are Double value. And the address that read them is "mscorlib.ni.dll+3AF455".
|
|
Back to top |
|
 |
cooleko Grandmaster Cheater
Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jul 08, 2016 9:50 am Post subject: |
|
|
Did you use the structure dissector on them?
If you did, then you will know how to differentiate each of the desired values, simply hard code (description 2 of my post above) pointers for each of week, day, energy, money, reputation. If they pass the etst, write the address.
for example:
Code: | ...
aobscan(...)
globalalloc(bDay,8)
globalalloc(bWeek,8)
globalalloc(bEnergy,8)
globalalloc(bMoney,8)
globalalloc(bRep,8)
...
code:
cmp [Register+DayspecificValueOffset], DaySpecificValue
je SaveDay
cmp [Register+WeekSpecificValueOffset], WeekSpecificValue
je SaveWeek
.
.
.
SaveDay:
mov [bDay], Register
//Add the original instruction here so it gets esecuted
jmp return
SaveWeek:
mov [bWeek], Register
jmp return
.
.
.
|
In your table, add an address with [bWeek], name Week, value type w/e the valuetype is. Repeat for each of the other variables. When the script runs, these addresses will autopopulate.
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 10:08 am Post subject: |
|
|
Well when I try structure dissector on week this happens. Also opcodes.
PS: I suck on writing scripts... I usually break everything...
Description: |
|
Filesize: |
37.92 KB |
Viewed: |
12826 Time(s) |

|
Description: |
|
Filesize: |
56.99 KB |
Viewed: |
12826 Time(s) |

|
Description: |
|
Filesize: |
66.43 KB |
Viewed: |
12826 Time(s) |

|
|
|
Back to top |
|
 |
Zanzer I post too much
Reputation: 126
Joined: 09 Jun 2013 Posts: 3278
|
Posted: Fri Jul 08, 2016 10:23 am Post subject: |
|
|
Well that certainly makes it easy. [eax+18]+8 is the name of the variable.
Code: | push eax
mov eax,[eax+18]
cmp [eax+8],'Week'
pop eax
je this_is_week |
Note you can only compare 4 string characters at a time using this method.
Or maybe it's even easier and dNumType (+4) or vartype(+2C) is unique to the Week address.
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 10:35 am Post subject: |
|
|
OK so lets make all this simple so even noob will understand what to do (that is me ^^). If I am going to write script then I need as much help as I can get. From what address I have to do aobscan so I can make this work?
|
|
Back to top |
|
 |
cooleko Grandmaster Cheater
Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jul 08, 2016 11:22 am Post subject: |
|
|
the address you did the structure dissect on
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 11:57 am Post subject: |
|
|
So I already did something wrong because game is broken
Code: | [ENABLE]
aobscan(week_aob, ?? ?? ?? ?? ?? ?? 00 00 00 00 F0 3F 20 0D 0D 03 34 0D 0D 03 28 12 60 02 08 0D 0D 03 28 12 60 02 28 12 60 02 D8 0C 0D 03 F0 0C 0D 03 01 00 00 00)
alloc(week,8)
label(save_week)
code:
push eax
mov eax,[eax+18]
cmp [eax+8],'Week'
je save_week
save_week:
mov [week],eax
jmp return
week_aob:
jmp code
return:
pop eax
[DISABLE]
dealloc(week) |
|
|
Back to top |
|
 |
cooleko Grandmaster Cheater
Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jul 08, 2016 12:52 pm Post subject: |
|
|
Why arent you using the aob template? It makes this so much easier.
Use the template and follow my comments
Code: |
[ENABLE]
aobscan(week_aob, ?? ?? ?? ?? ?? ?? 00 00 00 00 F0 3F 20 0D 0D 03 34 0D 0D 03 28 12 60 02 08 0D 0D 03 28 12 60 02 28 12 60 02 D8 0C 0D 03 F0 0C 0D 03 01 00 00 00)
//This aobscan is huge, what happened here?
//If you arent jumping on the instruction, then how do we know what EAX is? If you are jumping on the instruction, then I'll just assume you know what you are doing, but why have 6 wildcards in front?
alloc(week,8) //if not registered, you cant access in table, register or use globalalloc
label(save_week)
code:
push eax
mov eax,[eax+18]
cmp [eax+8],'Week'
je save_week
//Week is always saved because if it is not equal, this code gets run anyway
//add the original instruction here and then a return.
save_week:
mov [week],eax
jmp return
week_aob:
jmp code
return:
pop eax
//I'd put this in the code above
[DISABLE]
//you aren't restoring any code, template will fix this
dealloc(week) |
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Fri Jul 08, 2016 5:47 pm Post subject: |
|
|
OK nevermind that I give up on script. But I have new problem. I cannot find real address of one thing. I found address 0D4017C0 with right value but I cannot change it (I can change it but it snaps back when I examine it in game.
Is there way to backtrack real value with this?
Description: |
|
Filesize: |
86.1 KB |
Viewed: |
12697 Time(s) |

|
Description: |
|
Filesize: |
98.58 KB |
Viewed: |
12697 Time(s) |

|
Description: |
|
Filesize: |
41.31 KB |
Viewed: |
12697 Time(s) |

|
|
|
Back to top |
|
 |
cooleko Grandmaster Cheater
Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jul 08, 2016 6:10 pm Post subject: |
|
|
change esi+4
|
|
Back to top |
|
 |
Zanzer I post too much
Reputation: 126
Joined: 09 Jun 2013 Posts: 3278
|
Posted: Fri Jul 08, 2016 6:12 pm Post subject: |
|
|
Just change the dMin value instead?
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Sat Jul 09, 2016 5:33 am Post subject: |
|
|
Quote: | Zanzer
Just change the dMin value instead? |
All other values are strings.
But I figured out that my initial function "mscorlib.ni.dll+3AF455" is accesing all values that game is working with at time (and all can be changed ^^) so basically I have all that I need from start and didnt realize that...
Only problem is that after a while of playing there are tons of addresses in there.
But thanks all for helping
|
|
Back to top |
|
 |
liledition Cheater
Reputation: 0
Joined: 12 Sep 2014 Posts: 49
|
Posted: Sat Jul 16, 2016 4:20 am Post subject: |
|
|
Sorry about reposting on my post but I find out interesting fact about that address I found earlier ("mscorlib.ni.dll+3AF455" on my computer). Interest thing is address works with all other RAGS games that I played on my computer (same as the first one, find out what access this code and it will list most of addresses that game using at the time). My guess is that this is because RAGS games are using other program to play (RAGS suite that must be installed in order to play games) and that code is in fact some sort of engine-game communication (so if I examine my character code access most addresses that are used for my character).
So I think this is interesting enough to share here
|
|
Back to top |
|
 |
|