Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does not work with current version of Rocket League #7

Open
benjamin-swain opened this issue May 8, 2019 · 15 comments
Open

Does not work with current version of Rocket League #7

benjamin-swain opened this issue May 8, 2019 · 15 comments

Comments

@benjamin-swain
Copy link

benjamin-swain commented May 8, 2019

After injecting, a console opens for a moment and then shuts. I think something in the dll may be outdated. I'm looking for ways to fix it.

This line in dllmain.cpp causes the error. Do you think Psyonix changed this string/object name?
findInstanceAndHookVMT("PlayerController_TA TheWorld.PersistentLevel.PlayerController_TA", playerController);

@sean-halpin
Copy link
Owner

sean-halpin commented May 10, 2019

Each update seems to break the application binary interface between the game & the previously generated SDK.
So you will need to re-generate the UE3 sdk in the repo, using The Feckless SDK Generator.
There is then quite a bit of manual fixing to do, in order to compile that generated SDK :/
Then, you might find some names have changed as you suggested (the compiler will complain & you will need to search the new name in the SDK).
dllmain.cpp should work nicely to attach & hook onto the virtual method table if you can re-generate & compile the latest SDK though.

@Martinii89
Copy link

Would you mind sharing the procedure to use the sdk generator with rocket league?

@sean-halpin
Copy link
Owner

sean-halpin commented May 14, 2019

@M4rtini89 If you compile The Feckless SDK Generator and inject it into a running Rocket League process, leave it run for a few mins it will dump the SDK to C:\TFL_SDK_GEN.
The output will look like what is in this repo here.
Then you can use the SDK in a dll similar to what I've done here
You are going to need some knowledge of cpp (not much) in order to fix a bunch of errors when you try to compile with the SDK.
I managed to fix the compile errors with regex & manual fixes in about 40mins iirc.

@Martinii89
Copy link

My current obstacle is finding the required offsets. I've tried to open the executable in Ida, but it seems to be obfuscated somehow. Any tips on how to find those?

@sean-halpin
Copy link
Owner

sean-halpin commented May 14, 2019

I presume rocket league is still using unreal engine 3.
If so, I don't have a reason to believe that the byte signature for UE3's Process Event function would change from this value.
If it has changed I think the only reason for that would be that UE3 was updated and the signature of that particular function was changed. I think that is unlikely given that UE4 is out.
How those byte signatures were originally found is not something I am familiar with.
Possibly someone compiled an UE3 application then stepped through with something like IDA & waited for a piece of memory to be accessed that they knew would be passed to that function. (I'm guessing)

@Martinii89
Copy link

Martinii89 commented May 14, 2019

Ok. I tried compiling the sdk generator. But the game instantly crashes when I inject the dll :/
I tried to inject the bakkesmod dll the same way, just to check that I wasn't doing something horrible wrong for injection. But that worked and bakkes was functional ingame afterwards.

@sean-halpin
Copy link
Owner

sean-halpin commented May 14, 2019

Hmm, I vaguely remember the generator freezing for me too after injection.
You could try inject while the game is in a training session or sitting at the menu.
Have you tried attaching a debugger, breaking when the dll's on attach method is hit. Try step through and see where it breaks.

@Martinii89
Copy link

Martinii89 commented May 14, 2019

It's failing here. So I guess the signature changed..

@sean-halpin
Copy link
Owner

sean-halpin commented May 16, 2019

I think you're right, looks like the GNames pattern isn't being found.
I think there are tutorials to find these offsets.
From memory people seemed to have a few of these patterns to try against an UE3 game.
Give the patterns on lines 15 & 16 from here a shot.

@ToolB0xx
Copy link

ToolB0xx commented Jun 6, 2019

@opalr @M4rtini89 Did either of you ever successfully find these offsets or get the SDK to dump? Currently in the same situation as you all are.

@benjamin-swain
Copy link
Author

@opalr @M4rtini89 Did either of you ever successfully find these offsets or get the SDK to dump? Currently in the same situation as you all are.

I made a new tool like this. It is a Bakkes Mod plugin that anyone can use to automatically save their data (including controller state) to a shared dropbox.
The plugin development is here: https://github.com/opalr/rl_data_collection.
The guide to use the plugin is here: https://github.com/opalr/nn_data_plugin

I have not used the plugin in a few years so it will probably need updates to work with the current version of the game. If anyone is interested, feel free to test it out.

@RequestFX
Copy link

I know this topic is old but I would still like to use this but I have no idea how to find signatures for processevent, gobjects, gnames and how to make a sdk.
I would appreciate some help RequestFX#1541

@benjamin-swain
Copy link
Author

I know this topic is old but I would still like to use this but I have no idea how to find signatures for processevent, gobjects, gnames and how to make a sdk.
I would appreciate some help RequestFX#1541

I haven't looked at this in a long time and I don't remember what those things are but bakkes mod might have what you're looking for. There are a list of plugins in the bakkes mod repo that allow to read or send data to the game and call functions when certain events happen (also called hooks).

@RequestFX
Copy link

I know this topic is old but I would still like to use this but I have no idea how to find signatures for processevent, gobjects, gnames and how to make a sdk.
I would appreciate some help RequestFX#1541

I haven't looked at this in a long time and I don't remember what those things are but bakkes mod might have what you're looking for. There are a list of plugins in the bakkes mod repo that allow to read or send data to the game and call functions when certain events happen (also called hooks).

Thanks for that info. But how is this gonna help me?

@benjamin-swain
Copy link
Author

I know this topic is old but I would still like to use this but I have no idea how to find signatures for processevent, gobjects, gnames and how to make a sdk.
I would appreciate some help RequestFX#1541

I haven't looked at this in a long time and I don't remember what those things are but bakkes mod might have what you're looking for. There are a list of plugins in the bakkes mod repo that allow to read or send data to the game and call functions when certain events happen (also called hooks).

Thanks for that info. But how is this gonna help me?

It might not

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants