Steam spiel ownership verifikation. Aber wie?

  • Ich schreibe an einem Frontend für eine Modifikation welches einem Spiel einen Multiplayer modus gibt. Und mir ist über die zeit aufgefallen das spieler diesen mod auch nutzen können wenn sie es pirated haben. Das misfällt mir und ich will die externe anwendung dahingehend ausweiten das diese überprüft ob der nutzer auch wirklich das Spiel in seiner Steam Bibliothek besitzt. Oder anders gesagt ich will den zugang zu der mod zumindestens erschweren für die jenigen die die das spiel nicht legitim besitzen.

    Eine google suche war dabei jetzt nicht hilfreich also habe ich mir mal die Steam dateien angesehen. Im Ordner "Steam\steamapps" befinden sich appmanifests, die die ID's der spiele enthalten die via Steam installiert worden sind, aber so eine datei lässt sich zuleicht selbst erstellen.

    Dann ist mir eingefallen: Als ich mal gecrackte software untersucht habe ist mir aufgefallen das immer die "steam_api.dll", die sich im spiele ordner selbst befindet, verändert wird. Wenn ich davon einen hash hardcode oder auf einem server bereithalte und prüfe ob der stimmt bei jedem start dann würde das zumindestens solange funktionieren bis die "steam_api.dll", entweder durch steam selbst, oder durch das spiel geupdated wird. In anderen worten, ein update und der mod geht offline bis der hash aktualisiert wurde.

    Da das nicht so praktisch ist frage ich mich ob es eine möglichkeit gibt steam direkt zu fragen, entweder durch ein argument an die steam.exe oder durch einen dllcall, ob der angemeldete nutzer das spiel hat oder nicht. Ich halte das für laufzeitfreundlicher aber habe bisher nicht herausgefunden wie.

    Hat jemand eine idee? :S

  • Tja wenn das so einfach wäre, würde es nicht so viele gecrackte Steam Spiele geben.

    Ich dneke die Krux liegt im Offline-Modus von Steam. Dieser macht keinen Sinn für einen Multiplayer (zumindest heutzutage). Ggf. kannst du prüfen ob das Spiel im Online- oder Offline-Modus gestartet wurde und entsprechend den Mod abschalten.

  • Hi,

    auf https://steamcommunity.com/dev erhälst du Zugriff auf die Steam-API (aktuell HIER).

    Dort kannst du über die Funktion GetOwnedGames sowohl die Userdaten, als auch das/die vom User bei Steam registrierten Spiele erhalten. Da diese Daten bei Steam abgefragt werden und nicht lokal (wie es die Spiele aufgrund des Offline-Modus machen müssen) bekommst du reale Daten. Der User muss zwangsläufig, wenigstens für die Abfrage bei Steam, online sein.