Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Help with making table

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Discussions
View previous topic :: View next topic  
Author Message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 9:03 am    Post subject: Help with making table Reply with quote

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
View user's profile Send private message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Fri Jul 08, 2016 9:35 am    Post subject: Reply with quote

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
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 9:42 am    Post subject: Reply with quote

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
View user's profile Send private message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Fri Jul 08, 2016 9:50 am    Post subject: Reply with quote

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
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 10:08 am    Post subject: Reply with quote

Well when I try structure dissector on week this happens. Also opcodes.

PS: I suck on writing scripts... I usually break everything... Embarassed



op2.png
 Description:
 Filesize:  37.92 KB
 Viewed:  12826 Time(s)

op2.png



op1.png
 Description:
 Filesize:  56.99 KB
 Viewed:  12826 Time(s)

op1.png



Week.png
 Description:
Week structure dissect
 Filesize:  66.43 KB
 Viewed:  12826 Time(s)

Week.png


Back to top
View user's profile Send private message
Zanzer
I post too much
Reputation: 126

Joined: 09 Jun 2013
Posts: 3278

PostPosted: Fri Jul 08, 2016 10:23 am    Post subject: Reply with quote

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
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 10:35 am    Post subject: Reply with quote

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
View user's profile Send private message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Fri Jul 08, 2016 11:22 am    Post subject: Reply with quote

the address you did the structure dissect on
Back to top
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 11:57 am    Post subject: Reply with quote

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
View user's profile Send private message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Fri Jul 08, 2016 12:52 pm    Post subject: Reply with quote

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
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Fri Jul 08, 2016 5:47 pm    Post subject: Reply with quote

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?



structure.png
 Description:
 Filesize:  86.1 KB
 Viewed:  12697 Time(s)

structure.png



Show.png
 Description:
 Filesize:  98.58 KB
 Viewed:  12697 Time(s)

Show.png



op.png
 Description:
 Filesize:  41.31 KB
 Viewed:  12697 Time(s)

op.png


Back to top
View user's profile Send private message
cooleko
Grandmaster Cheater
Reputation: 11

Joined: 04 May 2016
Posts: 717

PostPosted: Fri Jul 08, 2016 6:10 pm    Post subject: Reply with quote

change esi+4
Back to top
View user's profile Send private message
Zanzer
I post too much
Reputation: 126

Joined: 09 Jun 2013
Posts: 3278

PostPosted: Fri Jul 08, 2016 6:12 pm    Post subject: Reply with quote

Just change the dMin value instead?
Back to top
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Sat Jul 09, 2016 5:33 am    Post subject: Reply with quote

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... Embarassed

Only problem is that after a while of playing there are tons of addresses in there.

But thanks all for helping Wink
Back to top
View user's profile Send private message
liledition
Cheater
Reputation: 0

Joined: 12 Sep 2014
Posts: 49

PostPosted: Sat Jul 16, 2016 4:20 am    Post subject: Reply with quote

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 Wink
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Discussions All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites