You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

76 lines
2.4 KiB

using System;
using System.IO;
using UnityEngine;
using Steamworks;
namespace IPA.Utilities.AntiPiracy
{
/// <summary>
/// Provides checks for whether or not the game is pirated.
/// </summary>
public static class PiracyChecks
{
/// <summary>
/// Runs through a list of checks to detect whether a game is pirated
/// </summary>
/// <returns></returns>
public static bool IsPirated
{
get
{
// Check for spoofed Steam Client
if (BeatSaber.ReleaseType == BeatSaber.Release.Steam && IsSpoofedSteam())
return true;
// Check for the presence of known pirated files
if (HasKnownFiles())
return true;
// If we get here, probably not a pirate
return false;
}
}
/// <summary>
/// Check common Steam Emulator values for red flags
/// </summary>
/// <returns></returns>
static bool IsSpoofedSteam()
{
// Always resolves to "IGGGAMES"
string userName = SteamFriends.GetFriendPersonaName(SteamUser.GetSteamID());
// Always resolves to "SteamFriends"
string friendName = SteamFriends.GetFriendPersonaName(new CSteamID(76561198042581607));
// Return if they both resolve to known spoofed values
return userName == "IGGGAMES" && friendName == "SteamFriends";
}
/// <summary>
/// Check for files that are present in pirated copies
/// </summary>
/// <returns></returns>
static bool HasKnownFiles()
{
// All known files
string[] paths = new string[]
{
Path.Combine(Application.dataPath, "Plugins", "valve.ini"),
Path.Combine(Application.dataPath, "Plugins", "steam.ini"),
Path.Combine(Application.dataPath, "Plugins", "huhuvr.ini"),
Path.GetFullPath(Path.Combine(Application.dataPath, "..", "SmartSteamEmu.ini")),
};
// Check for the existence of each file
foreach (string path in paths)
{
// If one is found, probably pirated
if (File.Exists(path))
return true;
}
return false;
}
}
}