working
This commit is contained in:
104
tools/check-game-basevehicle.ps1
Normal file
104
tools/check-game-basevehicle.ps1
Normal file
@@ -0,0 +1,104 @@
|
||||
param(
|
||||
[string]$GameRoot = "D:\SteamLibrary\steamapps\common\ProjectZomboid"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Get-Sha256([string]$Path) {
|
||||
if (-not (Test-Path $Path)) { return $null }
|
||||
return (Get-FileHash $Path -Algorithm SHA256).Hash.ToLowerInvariant()
|
||||
}
|
||||
|
||||
function Get-JarEntrySha256([string]$JarPath, [string]$EntryName) {
|
||||
if (-not (Test-Path $JarPath)) { return $null }
|
||||
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
$zip = [System.IO.Compression.ZipFile]::OpenRead($JarPath)
|
||||
try {
|
||||
$entry = $zip.GetEntry($EntryName)
|
||||
if ($null -eq $entry) { return $null }
|
||||
$stream = $entry.Open()
|
||||
$memory = New-Object System.IO.MemoryStream
|
||||
try {
|
||||
$stream.CopyTo($memory)
|
||||
} finally {
|
||||
$stream.Close()
|
||||
}
|
||||
$bytes = $memory.ToArray()
|
||||
$sha = [System.Security.Cryptography.SHA256]::Create()
|
||||
return (($sha.ComputeHash($bytes) | ForEach-Object { $_.ToString("x2") }) -join "")
|
||||
} finally {
|
||||
$zip.Dispose()
|
||||
}
|
||||
}
|
||||
|
||||
$repoRoot = Split-Path -Parent $PSScriptRoot
|
||||
$knownPatchedClass = Join-Path $repoRoot "zombie\vehicles\BaseVehicle.class"
|
||||
$patchedHash = Get-Sha256 $knownPatchedClass
|
||||
$patchedHashText = if ($null -eq $patchedHash) { "missing" } else { $patchedHash }
|
||||
$knownHelperClass = Join-Path $repoRoot "zombie\vehicles\LandtrainConstraintAuthHelper.class"
|
||||
$helperHash = Get-Sha256 $knownHelperClass
|
||||
$helperHashText = if ($null -eq $helperHash) { "missing" } else { $helperHash }
|
||||
|
||||
$targets = @(
|
||||
@{
|
||||
Name = "Client override path"
|
||||
Path = Join-Path $GameRoot "zombie\vehicles\BaseVehicle.class"
|
||||
},
|
||||
@{
|
||||
Name = "Dedicated override path"
|
||||
Path = Join-Path $GameRoot "java\zombie\vehicles\BaseVehicle.class"
|
||||
}
|
||||
)
|
||||
|
||||
$jarCandidates = @(
|
||||
(Join-Path $GameRoot "projectzomboid.jar"),
|
||||
(Join-Path $GameRoot "java\projectzomboid.jar")
|
||||
)
|
||||
|
||||
Write-Output "GameRoot: $GameRoot"
|
||||
Write-Output "Known patched hash (repo): $patchedHashText"
|
||||
Write-Output "Known helper hash (repo): $helperHashText"
|
||||
Write-Output ""
|
||||
|
||||
foreach ($target in $targets) {
|
||||
$path = $target.Path
|
||||
$hash = Get-Sha256 $path
|
||||
if ($null -eq $hash) {
|
||||
Write-Output "$($target.Name): MISSING ($path)"
|
||||
continue
|
||||
}
|
||||
|
||||
$status = if ($patchedHash -and $hash -eq $patchedHash) { "PATCHED" } else { "NOT_MATCHING_PATCHED_HASH" }
|
||||
Write-Output "$($target.Name): $status"
|
||||
Write-Output " path: $path"
|
||||
Write-Output " hash: $hash"
|
||||
}
|
||||
|
||||
Write-Output ""
|
||||
foreach ($helperPath in @(
|
||||
(Join-Path $GameRoot "zombie\vehicles\LandtrainConstraintAuthHelper.class"),
|
||||
(Join-Path $GameRoot "java\zombie\vehicles\LandtrainConstraintAuthHelper.class")
|
||||
) | Select-Object -Unique) {
|
||||
$hash = Get-Sha256 $helperPath
|
||||
if ($null -eq $hash) {
|
||||
Write-Output "Helper class: MISSING ($helperPath)"
|
||||
continue
|
||||
}
|
||||
$status = if ($helperHash -and $hash -eq $helperHash) { "PATCHED" } else { "NOT_MATCHING_HELPER_HASH" }
|
||||
Write-Output "Helper class: $status"
|
||||
Write-Output " path: $helperPath"
|
||||
Write-Output " hash: $hash"
|
||||
}
|
||||
|
||||
Write-Output ""
|
||||
foreach ($jar in $jarCandidates | Select-Object -Unique) {
|
||||
$jarHash = Get-JarEntrySha256 $jar "zombie/vehicles/BaseVehicle.class"
|
||||
if ($null -eq $jarHash) {
|
||||
Write-Output "Jar class: MISSING ($jar)"
|
||||
continue
|
||||
}
|
||||
Write-Output "Jar class hash:"
|
||||
Write-Output " jar: $jar"
|
||||
Write-Output " hash: $jarHash"
|
||||
}
|
||||
Reference in New Issue
Block a user