View previous topic :: View next topic |
Author |
Message |
cooleko Grandmaster Cheater Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Wed Jun 22, 2016 1:53 pm Post subject: Structure dissect loading wrong mono structure |
|
|
Mono game "Wasted", HP is inside of "Base Character" structure. Found the BaseCharacter:IsAlive code segment which checks HP for death. When I use the structure dissector on this it loads the "Player" structure, which coincidentally neatly falls in right after the BaseCharacter structure (BaseCharacter 0-32C, player 330-410). So I added 0, told it to fill gaps, which gives me fields to see, but they arent auto populated/named according to the mono structure.
How can I fix the designation that the structure dissector is using from Player to Base Character?
|
|
Back to top |
|
|
cooleko Grandmaster Cheater Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Thu Jun 23, 2016 4:30 pm Post subject: |
|
|
No solution? Is my question unclear? I could rephrase it if no one understands.
|
|
Back to top |
|
|
ParkourPenguin I post too much Reputation: 138
Joined: 06 Jul 2014 Posts: 4275
|
Posted: Thu Jun 23, 2016 5:56 pm Post subject: |
|
|
My apologies, but I really don't get what you're asking. From what you've said, the base character structure and player structure are two different structures. Why are you trying to treat them like they're a single structure?
If you want to view both at once, you can open up a new structure dissect window by going to File -> New window.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
|
Zanzer I post too much Reputation: 126
Joined: 09 Jun 2013 Posts: 3278
|
Posted: Thu Jun 23, 2016 6:01 pm Post subject: |
|
|
Guess Dark Byte forgot to add the super classes to the structure dissector like he did to the Mono dissector.
Seems like something simple enough to add... if you know CE's Mono source code.
|
|
Back to top |
|
|
cooleko Grandmaster Cheater Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Thu Jun 23, 2016 6:27 pm Post subject: |
|
|
My issue is that the structure "Base Character" has a pointer at 0 to "Player", so when the structure dissector attempts to load the related mono, it assigns the structure "player" instead of the structure "Base Character".
For instance, when HP is accessed, [eax+1A0], the structure dissector looks at eax and sees "player" when it is actually supposed to be seeing "Base Character". I want it to see "Base Character", Because there are some 300 odd values in this structure, I didnt want to manually add the values in.
Since there was no solution, i just manually added the values to the list.
This was made more difficult because mono dissector doesn't chronologically order the entries!
|
|
Back to top |
|
|
ParkourPenguin I post too much Reputation: 138
Joined: 06 Jul 2014 Posts: 4275
|
Posted: Thu Jun 23, 2016 6:58 pm Post subject: |
|
|
It shouldn't be doing that. At least I've never noticed that behavior before.
Try putting the virtual address directly into it instead of any symbols (e.g. if health address is 0FF24CC0, put in 0FF24B20), make sure mono features are active (i.e. no breakpoints are set), and make a new structure. Select "Yes" in the conformation window, and the window that follows should contain the name of the structure that HP is in. Make sure you don't have square brackets around the address, or CE will dereference that address and use that value as the base of the structure it's dissecting.
Out of curiosity, does the Player class inherit from Base Character? Expand the "base class" field of a class in the mono dissect window to see the hierarchy.
If none of this helps, some pictures might.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
|
panraven Grandmaster Cheater Reputation: 55
Joined: 01 Oct 2008 Posts: 941
|
Posted: Thu Jun 23, 2016 9:14 pm Post subject: |
|
|
Slightly modified the original monoscript's registerStructureDissectOverride function.
When enter the struct name, add a suffix like '@Base' to dissect till a parent class name matching the text following '@', ie. '@Base' can match up to parent class 'BaseCharacter' etc.
The original DissectOverride function is still there to get primary(?) class instance fields.
bye~
Description: |
allow dissect mono parent class, tested only on ce 6.5+ |
|
Download |
Filename: |
monoDissectParentClass.lua |
Filesize: |
2.61 KB |
Downloaded: |
431 Time(s) |
_________________
- Retarded. |
|
Back to top |
|
|
cooleko Grandmaster Cheater Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Fri Jun 24, 2016 1:00 pm Post subject: |
|
|
ParkourPenguin wrote: |
Out of curiosity, does the Player class inherit from Base Character? Expand the "base class" field of a class in the mono dissect window to see the hierarchy.
|
Player does inherit Base Character
panraven wrote: | Slightly modified the original monoscript's registerStructureDissectOverride function.
When enter the struct name, add a suffix like '@Base' to dissect till a parent class name matching the text following '@', ie. '@Base' can match up to parent class 'BaseCharacter' etc.
The original DissectOverride function is still there to get primary(?) class instance fields.
|
Do I just paste this into one of the mono related luas?
|
|
Back to top |
|
|
panraven Grandmaster Cheater Reputation: 55
Joined: 01 Oct 2008 Posts: 941
|
Posted: Fri Jun 24, 2016 2:50 pm Post subject: |
|
|
It can be placed alone in and run once from autorun directory.
There should be no side effect in non mono target.
bye~
_________________
- Retarded. |
|
Back to top |
|
|
cooleko Grandmaster Cheater Reputation: 11
Joined: 04 May 2016 Posts: 717
|
Posted: Sat Jun 25, 2016 9:01 pm Post subject: |
|
|
Worked perfectly, I appreciate your assistance!
|
|
Back to top |
|
|
|