Launch
This commit is contained in:
31
scripts/embed_wintun_from_tools.ps1
Normal file
31
scripts/embed_wintun_from_tools.ps1
Normal file
@@ -0,0 +1,31 @@
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$source = "tools\wintun\amd64\wintun.dll"
|
||||
$targetDir = "internal\wintunloader\assets\wintun\windows\amd64"
|
||||
$target = Join-Path $targetDir "wintun.dll"
|
||||
|
||||
function Test-PEAmd64($Path) {
|
||||
$bytes = [System.IO.File]::ReadAllBytes($Path)
|
||||
if ($bytes.Length -lt 1024) { throw "Invalid wintun.dll: file is too small." }
|
||||
if ($bytes[0] -ne 0x4d -or $bytes[1] -ne 0x5a) { throw "Invalid wintun.dll: missing MZ header." }
|
||||
$peOffset = [BitConverter]::ToInt32($bytes, 0x3c)
|
||||
if ($peOffset -le 0 -or $bytes.Length -lt ($peOffset + 6)) { throw "Invalid wintun.dll: bad PE header." }
|
||||
if ($bytes[$peOffset] -ne 0x50 -or $bytes[$peOffset+1] -ne 0x45 -or $bytes[$peOffset+2] -ne 0x00 -or $bytes[$peOffset+3] -ne 0x00) {
|
||||
throw "Invalid wintun.dll: missing PE signature."
|
||||
}
|
||||
$machine = [BitConverter]::ToUInt16($bytes, $peOffset + 4)
|
||||
if ($machine -ne 0x8664) {
|
||||
$hex = "0x{0:x4}" -f $machine
|
||||
throw "Wrong wintun.dll architecture: got $hex, expected amd64/x64 machine 0x8664. Use wintun\bin\amd64\wintun.dll from the official Wintun ZIP."
|
||||
}
|
||||
}
|
||||
|
||||
if (-not (Test-Path $source)) {
|
||||
throw "Missing $source. Put the official signed amd64 wintun.dll there first."
|
||||
}
|
||||
|
||||
Test-PEAmd64 $source
|
||||
New-Item -ItemType Directory -Force -Path $targetDir | Out-Null
|
||||
Copy-Item -Force $source $target
|
||||
Write-Host "Embedded Wintun asset prepared: $target"
|
||||
Write-Host "Now rebuild with: powershell -ExecutionPolicy Bypass -File .\scripts\build_windows.ps1"
|
||||
Reference in New Issue
Block a user