105 lines
3.4 KiB
PowerShell
105 lines
3.4 KiB
PowerShell
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"
|
|
}
|