Offsets technically always change for every binary. ..
well, in this patch, even seems the ui elements remained in place.
I saw "Version Tracking" button in the Ghidra
and I suspect that with the help of this utility we can compare an already reversed code and new one,
and it is easy to see where changes have occurred.
Do you use this utility and is it worth it to study how it works?
well, in this patch, even seems the ui elements remained in place.
I saw "Version Tracking" button in the Ghidra
and I suspect that with the help of this utility we can compare an already reversed code and new one,
and it is easy to see where changes have occurred.
Do you use this utility and is it worth it to study how it works?
I think I used that button or something similar few years ago. The only thing I remember now is that it takes 5 days of computing power to complete. 😂
If I did not reply to you, it mean the question you are asking is stupid.
Post Thanks / Like - 1 Thanks
Sychotix (1 members gave Thanks to GameHelper for this useful post)
well, in this patch, even seems the ui elements remained in place
The location of the GameState map definitely changed... but the code that accessed the map did not . The pattern found the code's new location, then pulled the offset to the GameState map pointer. We then read the pointer stored at the address. The offsets in a structure/class don't always change as I explained in the previous post.
Just correcting what you said =P Offsets did change, but GameHelper handled it with similar pattern matching. When we get to 3.18, the offsets of the UI elements will almost certainly break again for the same reason I explained above with the armorHelmetTopper. They are adding multiple new UI windows to support the league mechanic. If any of those happen to be higher up in the structure's memory... everything below its offset will be incorrect.
Originally Posted by wlastas
saw "Version Tracking" button in the Ghidra
and I suspect that with the help of this utility we can compare an already reversed code and new one,
and it is easy to see where changes have occurred.
Do you use this utility and is it worth it to study how it works?
I haven't gone into specifically reversing chunks of code to track changes using that tool. I used to use it when updating my simple PoEHUD fork... but it got a bit cumbersome. Now I just analyze each with Ghidra and do pattern scanning from one version to the next. If a method has changed significantly enough, I usually look for calling function patterns and follow the call back down. A couple of the older ExileAPI guys and I wrote some pattern scanners and patterns for various offsets... but it is a VERY time consuming process and many patterns break after major updates due to code changes. There was one league I got access to the alpha binary and spent about 2 weeks or so updating and writing new patterns just so that we had a day 0 simple hud. There is a reason I don't do it anymore.
GameHelper rewrote all of HUD to be super simple for that kind of reason... and thus we have this great program. I know he puts in (way too much) work into pattern stuff still just so we have it at league launch day(ish) haha
Just correcting what you said =P Offsets did change, but GameHelper handled it with similar pattern matching.
I understand what you are talking about - I already mastered (in the first approximation) 2 months ago
the process of finding calling functions and creating patterns for their search from c#
thanks to @GameHelper detailed instructions in the StaticOffsetsPatterns file
by nothing has changed, I mean just the absence of changes in the structures and the code of the functions that we are looking for with the help of patterns, which obviously allowed our programs to work immediately after the last update
Originally Posted by Sychotix
...and spent about 2 weeks or so updating and writing new patterns..
if it's not a secret, on what and for what program do you write them?
I have already made several c# functions that allow me to quite easily find offsets
( taking into account the fact that the basic structures themselves have not changed )
on the camera, hero, map, entity list, UI root, etc.
But finding them requires manual debugging from the studio .
However, I'm currently working on reading processor register values from # - and this will completely automate the process of finding.
That is, I want to make a analogue of the cheat engine with its lua support, but on C#
if it's not a secret, on what and for what program do you write them?
I have already made several c# functions that allow me to quite easily find offsets
( taking into account the fact that the basic structures themselves have not changed )
on the camera, hero, map, entity list, UI root, etc.
But finding them requires manual debugging from the studio .
However, I'm currently working on reading processor register values from # - and this will completely automate the process of finding.
That is, I want to make a analogue of the cheat engine with its lua support, but on C#
Just the same method as whats written in ExileAPI's pattern scanner but a bit more complex/better design. Written in C#, I think all of us use Ghidra for making patterns. I copy the chunk I'm interested in and use Ghidra's pattern search function to cut out all the operands that could change.
hahha but my branch still private^^
I will keep it for history
thanks for doing such a hell of a job.
with simply terrible architecture and extremely strange solutions - as for me, but meticulously documented so that the code cannot be read and we have to use the decompiled version))
i know its a long shot but could we get radar working while in controller input mode?
id actually pay money for this lol, gna be stuck at work all launch week but can play remotely from my phone with a controller
So I just got my controller, dude the game is unplayable with controllers.
Have you even used controller with POE before typing this msg?
I hope once controllers are out of Beta mode, things are better.
anyway, working on a fix now so that GH works with controller.
Last edited by GameHelper; 05-07-2022 at 05:53 PM.
If I did not reply to you, it mean the question you are asking is stupid.
I think all of us use Ghidra for making patterns. I copy the chunk I'm interested in and use Ghidra's pattern search function to cut out all the operands that could change.
@alcor75 — 05/06/2022
"in still a old IDA pro fan ,.... "
I hope he doesn't mind that I quoted him from his public discord channel
Thank You for this wonderful tools!!!
My quesitons is how to find already placed totems numbers?
You'll need to write code to extend that functionality yourself as deployed object tracking isn't supported. The actor component contains a vector of deployed objects, each is an 8-byte struct. Your basically looking for a type id of 4 (Totem).
Thanks for sharing your work GameHelper and sorry for my stupidity, but whenever I build gamehelper or loader I don't have any plugins in the plugin folder. I'm probably missing an important step. Would be nice if someone can help me with that.
Thanks for sharing your work GameHelper and sorry for my stupidity, but whenever I build gamehelper or loader I don't have any plugins in the plugin folder. I'm probably missing an important step. Would be nice if someone can help me with that.
Why not use the pipeline in GitHub (a.k.a github actions) to build it rather than figuring it out yourself.
Last edited by GameHelper; 05-08-2022 at 08:08 AM.
If I did not reply to you, it mean the question you are asking is stupid.