You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Can you clarify, where your superhexagon.x84_64 binary comes from? I presume that it comes from Steam. I applied the bspatch file to my copy of the game and looked at the diffoscope output. It produces bad assembler. E.g.:
(bad) is already an indication that something went sideways, and additionally, the new instructions don't make much sense to me. So I presume that I have the wrong binary. It would be nice, if you can add a source and a sha256sum for the binary.
Also please note that Super Hexagon recently updated and removed superhexagon.x64_64, see https://steamdb.info/depot/221643/. I pulled my copy from an older backup snapshot, but for the general public, I think that superhexagon.x64_64 can't be found any longer.
Also I have trouble understanding your hooking method. (Maybe because I don't see what your bspatch actually does). You seem to rely on overloading __stack_chk_fail. How do you trigger the stack check fail method? Wouldn't it be cleaner to override a few symbols from inside the game itself?
is about? You seem to set a raw address to the ofSetWindowShape function. But this address is way too short. That seems to just be an offset. But an offset into what? What's the base address for this offset? Does this get relocated by the linker? But I can't see a relocation instruction anywhere.. so I am not sure if that theory is correct.
Pardon my many questions. I have never seen application hijacking done this way and I am quite interested in how you achieve it.
Thank you in advance!
The text was updated successfully, but these errors were encountered:
Hi, it's been a while since I've looked at this code, but I'll try to get around to investigating your questions when I get a chance (not sure when that'll be though).
Regarding where my superhexagon binary comes from I believe I got it from the superhexagon website. If they recently updated the binary then my patch likely won't work.
I know it's been a while since you asked, but I've just been fiddling with this project again lately and I have the answers to your question in case you're still interested.
My version of the game does not come from steam. It comes from the humble bundle distribution of the game which is sold at https://superhexagon.com/. The sha256 of the executable (not the bash script launcher) is a27df72e78e8e7b791d213ab3da5b18f38b26c2d3a5dca58c47172bef6278527.
Regarding how I implemented the hooking I did just override the __stack_check_fail function and patch the binary to call that function anywhere I wanted to shim. I couldn't override symbols from within the game using LD_PRELOAD because those symbols are not dynamically linked. My overrided __stack_check_fail function then checks rbp to see which call site it is at so that it can perform the appropriate operation. I believe the address you point out is in fact just a static address, not a relocation or offset.
Hope that answers you're questions. Sorry for such a delayed response.
Can you clarify, where your superhexagon.x84_64 binary comes from? I presume that it comes from Steam. I applied the bspatch file to my copy of the game and looked at the diffoscope output. It produces bad assembler. E.g.:
(bad) is already an indication that something went sideways, and additionally, the new instructions don't make much sense to me. So I presume that I have the wrong binary. It would be nice, if you can add a source and a sha256sum for the binary.
Also please note that Super Hexagon recently updated and removed superhexagon.x64_64, see https://steamdb.info/depot/221643/. I pulled my copy from an older backup snapshot, but for the general public, I think that superhexagon.x64_64 can't be found any longer.
Also I have trouble understanding your hooking method. (Maybe because I don't see what your bspatch actually does). You seem to rely on overloading __stack_chk_fail. How do you trigger the stack check fail method? Wouldn't it be cleaner to override a few symbols from inside the game itself?
Also would you care to explain what:
is about? You seem to set a raw address to the ofSetWindowShape function. But this address is way too short. That seems to just be an offset. But an offset into what? What's the base address for this offset? Does this get relocated by the linker? But I can't see a relocation instruction anywhere.. so I am not sure if that theory is correct.
Pardon my many questions. I have never seen application hijacking done this way and I am quite interested in how you achieve it.
Thank you in advance!
The text was updated successfully, but these errors were encountered: