AeonLucid / RocketLeaguePublic

The workings of the Rocket League /Services endpoint.
111 stars 24 forks source link

Network Traffic not showing up in Fiddler #23

Closed trister1997 closed 1 month ago

trister1997 commented 4 years ago

So ive written a project around your findings to get stats for Steam, PS4, and Xbox. I appreciate all the work finding this information!

I was trying to figure out how to get the requests to go through fiddler so I could use your proxy and fiddler script to dump the requests, but I think its because the game uses UDP instead of TCP. How would I get the requests to show up in fiddler? Force the game to TCP or make the game use some proxy or something?

Thanks!

itsjafer commented 3 years ago

I have the same problem right now, would love help from anyone that was able to intercept the network traffic

pgsleepy commented 2 years ago

A bit late, just want to add my two cents to the conversation.

I think its because the game uses UDP instead of TCP.

Forcing the WebSocket connection to fail doesn't work anymore, it'll fallback regardless. This in turn means forcing HTTPS doesn't work either, WebSocket requests run on TCP which is what we receive.

I've tried to intercept WS packets through Fiddlr to no avail and I've tried countless of methods, it may be my expertise but I had no success in getting these.

Been still looking for it.

SD4RK commented 2 years ago

You can hook the ProcessEvent (detour it, address = "4C 8B F1 E8 ?? ?? ?? ?? 85 C0 0F 84" - 0x4A) function. In your hook redirect the connection to your local server:

    void __fastcall hooks::hooked_process_event( UObject* object, UFunction* function, void* params, void* result ) {

        if (function) {
                        if (strcmp(function->GetFullName().c_str(), "Function ProjectX.PsyNetConnection_X.HandleUrlChanged") == 0) {
                conn = (UPsyNetConnection_X*)object;
            }
        }

        if (conn) {
                        // Change it every tick just incase.
            conn->URL->URLv2 = FString(L"http://127.0.0.1/rpc");
        }
        }

On your localhost run the HTTP&WS mitm servers. Something like that would do the work: https://gist.github.com/SD4RK/94edba56876a45fffd30fc1a2a09727b (code is dirty; should have Python+flask+websockets installed). This is a dirty workaround but it works.

pgsleepy commented 2 years ago

You can hook the ProcessEvent (detour it, address = "4C 8B F1 E8 ?? ?? ?? ?? 85 C0 0F 84" - 0x4A) function. In your hook redirect the connection to your local server:

  void __fastcall hooks::hooked_process_event( UObject* object, UFunction* function, void* params, void* result ) {

      if (function) {
                        if (strcmp(function->GetFullName().c_str(), "Function ProjectX.PsyNetConnection_X.HandleUrlChanged") == 0) {
              conn = (UPsyNetConnection_X*)object;
          }
      }

      if (conn) {
                        // Change it every tick just incase.
          conn->URL->URLv2 = FString(L"http://127.0.0.1/rpc");
      }
        }

On your localhost run the HTTP&WS mitm servers. Something like that would do the work: https://gist.github.com/SD4RK/94edba56876a45fffd30fc1a2a09727b (code is dirty; should have Python+flask+websockets installed). This is a dirty workaround but it works.

@SD4RK - I've been looking around, not too familiar with C++ but I am similar with other languages so I'm able to read it sort of. Are you using an SDK?

I've tried to maybe get this working with BakkesMod through

gameWrapper->HookEventPost("Function ProjectX.PsyNetConnection_X.HandleUrlChanged", std::bind(&WSRedirectPlugin::HookPsyNet, this));

But have not yet been able to convert your function and conn part yet. Thanks for your reply and detailed explanation, but I think I'm not quite figuring it out properly yet lol

Could you maybe add me on Discord? PGSleepy#2108

pgsleepy commented 2 years ago

@SD4RK Hey, could you maybe add me on Discord? PGSleepy#2108 ^^

Jawschamp commented 6 months ago

Just wondering, did we ever find anything useful from this PR?

pgsleepy commented 6 months ago

Just wondering, did we ever find anything useful from this PR?

Yes, we did, but not exactly the same way as SD4RK proposed because that required you to reverse an SDK. Are you trying to get ranked information?

Jawschamp commented 6 months ago

One of many sorts of information yes

pgsleepy commented 6 months ago

One of many sorts of information yes

Add me on Discord, QESleepy.