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 


[SCRIPTS] Objects relationship finder

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting
View previous topic :: View next topic  
Author Message
ablonevn
Advanced Cheater
Reputation: 1

Joined: 02 Oct 2011
Posts: 59

PostPosted: Thu Jan 10, 2013 10:15 pm    Post subject: [SCRIPTS] Objects relationship finder Reply with quote

yep, this this another scripting for someone who addicted to dig in objects and pointers, i had mention to DB to add this feature to structure dissect, but my worse in English gave him an idea about link structure, and it seem doesn't worked well, and i don't see any discus about this function in forum, perhaps i'm only one who using it =))
Description about script: sometime you found an object and another one, these is one thing you can make sure one object is "child" of another or simply contains other one. example you found player object and you found the gun object which player holding but you don't know relationship between them, here is small script to do that job. It using timer to scan address, of cause it can't compare to native class, i saw Lua Native in main.lua, but it's hard way to coding autoassambler to do this task. just wait until some do it Very Happy
Installion: copy ORF.lua and ORF.frm to autorun folder and restart CE. it will show lmhs menu-item in main CE window.

here is the link download:
Code:

http://www.mediafire.com/?gc56zgnsuq0qzln

sorry, i don't have enough "trust" point to upload it here Very Happy
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 458

Joined: 09 May 2003
Posts: 25296
Location: The netherlands

PostPosted: Fri Jan 11, 2013 4:58 am    Post subject: Reply with quote

Quote:
i had mention to DB to add this feature to structure dissect, but my worse in English gave him an idea about link structure, and it seem doesn't worked well, and i don't see any discus about this function in forum, perhaps i'm only one who using it =))


Then make a topic about it, without feedback I can't fix bugs.
As far as I can see it works, it fills in the undefined pointers to the structures, but do you want more feedback after it's done ?

anyhow, your implementation looks more like the structure spider
parent address=base region
children addresses=pointer must be in range, start,stop
It will find all the links to the given region from the base address

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
ablonevn
Advanced Cheater
Reputation: 1

Joined: 02 Oct 2011
Posts: 59

PostPosted: Fri Jan 11, 2013 10:26 am    Post subject: Reply with quote

Dark Byte wrote:
Quote:
i had mention to DB to add this feature to structure dissect, but my worse in English gave him an idea about link structure, and it seem doesn't worked well, and i don't see any discus about this function in forum, perhaps i'm only one who using it =))


Then make a topic about it, without feedback I can't fix bugs.
As far as I can see it works, it fills in the undefined pointers to the structures, but do you want more feedback after it's done ?

anyhow, your implementation looks more like the structure spider
parent address=base region
children addresses=pointer must be in range, start,stop
It will find all the links to the given region from the base address

no, i think you do not need to read feedback anymore, just because these is no one use it Very Happy. it only waste your time.
And about structure spider, it different abit, and i'm rather using structure dissect to comparing than using structure spider, i don't know when "structure spider" release but every time i'm using it, it only worked for first or second time and then it raise an exception and not working any more, even now. may be my computer too old ? Very Happy
and the different is i'm only show which [[parent pointer+ofs1]+ofs2]+...=childpointer. i'm calling it as "relationship". but structure spider read content of both pointer with level-depth selected and compare them.
Here, i'm tested it with tutorial-i386 abit to find the most exactly root pointer, following is step to reproduce (may be i'm just lucky with these address):
for step 1-3:
i'm only reproduce for step 1, step 2 & 3 are same.
i found address point to health is: 16cff0, after doing "find out what access" it give me instruction:
tutorial-i386.exe+29198 - 8B 83 78040000 - mov eax,[ebx+00000478], that mean i need to find ebx value and my ebx=16cff0-478=0016CB78. this will be my child address. now just continue find out what access to 0016CB78, and here is instruction:
tutorial-i386.exe+23225 - 8B 1A - mov ebx,[edx]

now choose select curent function and scroll up abit, i saw a static address:
tutorial-i386.exe+231EF - A1 D0EE5800 - mov eax,[tutorial-i386.exe+18EED0] as same as
004231EF - A1 D0EE5800 - mov eax,[0058EED0] : [001AFA48]

now on the tree calling to function access to pointer i need to find, these is one static address. let us try our lucky with it: and i fill it to ORF form:
parent: 0058EED0
child: 0016CB78, and i' really lucky, here is result when i' click to scan:
[[*+0]+38]. that mean : [[0058EED0+0]+38]==0016CB78. done, find root pointer finish & almost first 4th [*+0] pointer in table are worked. with pointer scan with level these are about 100 address, but i think this one is the nearest.

and for step 4:
address i'm found is:150020 and after doing find out what access to i found this:
00429ED4 - 8B 80 70040000 - mov eax,[eax+00000470](*)
00429EDA - 8B 00 - mov eax,[eax]
set break point on 00429ED4 then i have eax=00170E88, i' find what access to this object. i have these code:
00423225 - 8B 1A - mov ebx,[edx]
scroll up abit we see 0058EED0 again. and scan for relation ship we have it's offset [[*+0]+38], event if i follow the "ret" instruction from (*) i will see static address 0058EEC0 and scan for relationship it will return: [[*+10]+38] is same result.

i think this could be more powerful if your "find out what access" you do a log "tree calling" combine with "run until ret" & using your guess "select current function" to collect every code and reveal it contain static address or not (the right part of assember instruction which have length=Cool and do scan pointer with parent address is address you had loged, childrent is address selected on address table. if the pointer relationship can be found. i'think it is the best static address. and of course, if these is solution to save these pointer to compare with later scan or when restart game. i think log address "position" instead "address" is better to apply change for the next scan.



Tutorial-i386.CT
 Description:

Download
 Filename:  Tutorial-i386.CT
 Filesize:  171.5 KB
 Downloaded:  995 Time(s)

Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting 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