Skip to content

Properly patch 'Forcejoin'#23

Open
I-Knight-I wants to merge 8 commits into
HugeSpaceship:mainfrom
I-Knight-I:feat/forcejoin
Open

Properly patch 'Forcejoin'#23
I-Knight-I wants to merge 8 commits into
HugeSpaceship:mainfrom
I-Knight-I:feat/forcejoin

Conversation

@I-Knight-I

@I-Knight-I I-Knight-I commented Jul 11, 2026

Copy link
Copy Markdown

Patches the 'forcejoin' exploit by improving the way REQUEST_JOIN messages are handled on the Host.
The patch overwrites the game's existing code so that it does the following:

  1. Get the source parameter (NetworkClientId) of the event
  2. Requests the CFriendData from the source
  3. If non-null, gets CFriendData->WeInvitedThisPlayerToJoinUs and checks it's > 0.0
  4. If null (or <= 0.0) defaults to the user's in-game privacy settings

Some examples:

  1. Knight has "Auto-Reject" set for the Friends setting.
    His friend Sackboy1 attempts to forcejoin without an invite.
    Knight receives no connection, and the join attempt is auto-denied.

  2. Knight has "Ask" set for the Everyone else setting.
    SackboyNotFriend attempts to forcejoin without an invite.
    Knight receives a prompt asking whether he wants SackboyNotFriend to join or not.

  3. Knight has "Auto-Reject" set for the Friends setting.
    He invites Sackboy1.
    Sackboy1 uses forcejoin... for some reason
    Sackboy1 immediately joins Knight (this is identical behaviour to just accepting the invite)

  4. Knight has "Auto-Accept" set for the Friends setting.
    His friend Sackboy1 uses forcejoin without an invite.
    Sackboy1 immediately joins Knight (this is identical behaviour to using the in-game 'Join' feature)

As a result, 'forcejoin' becomes a redundant exercise as it will always be treated identically as any other attempt to join someone's lobby. It provides no greater or lesser access than the built-in features LBP offers.


Special thanks to these ppl for their help:

  • FeTetra (Knowledge)
  • uh wot (Testing + Knowledge + Tools)
  • ToasterTheBrot (Testing + Knowledge)
  • mold (Knowledge)

@I-Knight-I
I-Knight-I marked this pull request as draft July 11, 2026 00:34
@I-Knight-I
I-Knight-I marked this pull request as ready for review July 13, 2026 10:11
@I-Knight-I I-Knight-I changed the title WIP - Properly patch 'Forcejoin' Properly patch 'Forcejoin' Jul 13, 2026
@I-Knight-I

Copy link
Copy Markdown
Author

Ready for testing. Things to check (on both RPCS3 + PS3) for each game:
( LBP1 | LBP2 | LBP3 | LBP3 JP )

Forcejoin Friend Invite Privacy Setting Expected
Y Y Y Friends: Ask Auto-Join
Y Y Friends: Ask Prompted
Y Y Friends: Auto-Accept Auto-Join
Y Y Friends: Auto-Reject Rejected
Y Y Friends: Ask Auto-Join
Y Friends: Ask Prompted
Y Friends: Auto-Accept Auto-Join
Y Friends: Auto-Reject Rejected
Y Everyone: Ask Prompted
Y Everyone: Auto-Reject Rejected
Y Everyone: Auto-Accept Auto-Join

Additionally, the following features should also be checked:

  • Local Splitscreen players joining (should always Auto-Join)
  • Request-Forwarding -- joining a party by connecting to a member of the party who isn't the host (should always respect the Host's Privacy Setting)
  • Request-Forwarding using force-join (should always respect the Host's Privacy Setting)

@I-Knight-I

Copy link
Copy Markdown
Author

LBP 1 Local Splitscreen
image
LBP 2 Local Splitscreen
image
LBP 3 Local Splitscreen
image

@Toastbrot236

Copy link
Copy Markdown
Contributor

Joining, inviting and following an online friend works in LBP1 (RPCS3), also if the online friend has a local guest. LBP1 only has a toggle to auto-reject join requests, and both rejecting and not rejecting (prompting) work.

grafik

Only issue is that if you invite a player, and that player rejects your invite, your game will still act as if your invite is pending, but that could be an lbp1-exclusive issue. Would have to test on LBP2/3 to find out.

@Toastbrot236

Copy link
Copy Markdown
Contributor

The bug where your invite is still shown as pending, even if it was cancelled, seems to also happen in LBP2.

Also, in LBP2 specifically (maybe also LBP3, but not LBP1), trying to join a friend will make you auto-join them, regardless of their privacy settings and regardless of who else is in their lobby.

@I-Knight-I

I-Knight-I commented Jul 22, 2026

Copy link
Copy Markdown
Author

LBP1 Force-join attempt rejected (Based on 'Auto-reject join requests' set to 'True')
image

LBP2 Force-join attempt rejected (based on 'Auto-reject' setting for Everyone)
image

LBP3 Force-join attempt rejected (based on 'Auto-reject' setting for Friends)
image

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

Successfully merging this pull request may close these issues.

2 participants