ОСНОВНОЙ СКРИПТ (PowerShell). Перед началом ввести cd и путь майнкрафта, затем вставить скрипт
Комплексная проверка: проверка на виртуалку, процессы javaw и explorer, состояния служб и список твинков игрока.
$ErrorActionPreference = "SilentlyContinue"
$OutputFile = Join-Path (Get-Location) "artycheck.txt"
function Safe-Value {
param($Value)
if ($null -eq $Value -or [string]::IsNullOrWhiteSpace("$Value")) {
return "Не найдено"
}
return "$Value"
}
function Write-Line {
param([string]$Text)
Add-Content -Path $OutputFile -Value $Text -Encoding UTF8
}
function Get-ServiceStartModeText {
param($Mode)
switch ($Mode) {
"Auto" { "Авто" }
"Manual" { "Вручную" }
"Disabled" { "Отключена" }
default { $Mode }
}
}
if (Test-Path $OutputFile) {
Remove-Item $OutputFile -Force
}
try {
$cs = Get-CimInstance Win32_ComputerSystem
$bios = Get-CimInstance Win32_BIOS
$drives = Get-CimInstance Win32_DiskDrive
$gpus = Get-CimInstance Win32_VideoController
$pnp = Get-CimInstance Win32_PnPEntity
$computerModel = Safe-Value $cs.Model
$biosSerial = Safe-Value $bios.SerialNumber
$regInfo = @()
$regInfo += "HKLM:\SOFTWARE"
$regInfo += "HKCU:"
$regInfo += "HKCR:"
$regInfo += "HKU:"
$regInfo += "HKCC:"
$winVer = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -ErrorAction SilentlyContinue)
if ($winVer) {
$regInfo += "Windows=$($winVer.ProductName)"
$regInfo += "Build=$($winVer.CurrentBuild)"
}
$diskModels = if ($drives) {
($drives | Select-Object -ExpandProperty Model | Sort-Object -Unique) -join "; "
} else {
"Не найдено"
}
$gpuModels = if ($gpus) {
($gpus | Select-Object -ExpandProperty Name | Sort-Object -Unique) -join "; "
} else {
"Не найдено"
}
$virtualKeywords = @(
"virtualbox",
"vmware",
"hyper-v",
"hyperv",
"vbox",
"qemu",
"xen",
"virtual",
"kvm",
"parallels",
"virtio"
)
$virtualDevices = New-Object System.Collections.Generic.List[string]
foreach ($dev in $pnp) {
$text = "$($dev.Name) $($dev.Manufacturer)"
foreach ($kw in $virtualKeywords) {
if ($text -match [regex]::Escape($kw)) {
$virtualDevices.Add($dev.Name)
break
}
}
}
foreach ($kw in $virtualKeywords) {
if ($computerModel -match [regex]::Escape($kw)) {
$virtualDevices.Add("Признак ВМ: $computerModel")
}
}
$virtualDevices = $virtualDevices | Sort-Object -Unique
Write-Line "1. Модель системы: $computerModel"
Write-Line "2. Серийный BIOS: $biosSerial"
Write-Line "3. Реестр: $($regInfo -join ' | ')"
Write-Line "4. Модель диска: $(Safe-Value $diskModels)"
Write-Line "5. Видеоадаптеры: $(Safe-Value $gpuModels)"
Write-Line "6. Виртуальные устройства: $(if($virtualDevices.Count){$virtualDevices -join '; '}else{'Не найдено'})"
}
catch {
Write-Line "Ошибка получения системной информации: $($_.Exception.Message)"
}
Write-Line ""
Write-Line "==========================================================="
Write-Line ""
Write-Line "Информация о запуске компьютера, процессе explorer и javaw"
Write-Line ""
Write-Line "==========================================================="
Write-Line ""
try {
$os = Get-CimInstance Win32_OperatingSystem
$bootTime = $os.LastBootUpTime
$uptime = (Get-Date) - $bootTime
Write-Line "Последнее включение ПК: $($bootTime.ToString('yyyy-MM-dd HH:mm:ss'))"
Write-Line "Время работы системы: $($uptime.Days) дн. $($uptime.Hours) ч. $($uptime.Minutes) мин. $($uptime.Seconds) сек."
Write-Line ""
$explorer = Get-Process explorer -ErrorAction SilentlyContinue
if ($explorer) {
$runTime = (Get-Date) - $explorer.StartTime
Write-Line "explorer.exe:"
Write-Line " Время запуска: $($explorer.StartTime.ToString('yyyy-MM-dd HH:mm:ss'))"
Write-Line " Время работы: $($runTime.Days) дн. $($runTime.Hours) ч. $($runTime.Minutes) мин."
}
else {
Write-Line "explorer.exe: Не найдено"
}
Write-Line ""
$javawList = Get-Process javaw -ErrorAction SilentlyContinue
if ($javawList) {
Write-Line "javaw.exe:"
foreach ($proc in $javawList) {
try {
$procUptime = (Get-Date) - $proc.StartTime
Write-Line " PID: $($proc.Id)"
Write-Line " Время запуска: $($proc.StartTime.ToString('yyyy-MM-dd HH:mm:ss'))"
Write-Line " Время работы: $($procUptime.Days) дн. $($procUptime.Hours) ч. $($procUptime.Minutes) мин."
Write-Line ""
}
catch {
Write-Line " PID: $($proc.Id) - информация недоступна"
}
}
}
else {
Write-Line "javaw.exe: Не найдено"
}
}
catch {
Write-Line "Ошибка получения информации о процессах: $($_.Exception.Message)"
}
Write-Line ""
Write-Line "============================================="
Write-Line " СОСТОЯНИЕ СЛУЖБ"
Write-Line "============================================="
Write-Line ""
Write-Line ("{0,-10} {1,-12} {2,-12} {3}" -f "Служба","Состояние","Тип запуска","Время запуска")
Write-Line ("{0,-10} {1,-12} {2,-12} {3}" -f "------","---------","-----------","-------------")
$servicesToCheck = @(
"PcaSvc",
"DPS",
"SysMain",
"EventLog"
)
foreach ($svcName in $servicesToCheck) {
try {
$svc = Get-CimInstance Win32_Service -Filter "Name='$svcName'"
$startTime = "Не найдено"
if ($svc.State -eq "Running") {
try {
$proc = Get-Process -Id $svc.ProcessId -ErrorAction SilentlyContinue
if ($proc) {
$startTime = $proc.StartTime.ToString("yyyy-MM-dd HH:mm:ss")
}
}
catch { }
}
Write-Line (
"{0,-10} {1,-12} {2,-12} {3}" -f
$svc.Name,
$svc.State,
(Get-ServiceStartModeText $svc.StartMode),
$startTime
)
}
catch {
Write-Line (
"{0,-10} {1,-12} {2,-12} {3}" -f
$svcName,
"Не найдено",
"Не найдено",
"Не найдено"
)
}
}
Write-Line ""
Write-Line "============================================="
Write-Line " СПИСОК ТВИНКОВ ИГРОКА"
Write-Line "============================================="
Write-Line ""
try {
$nicknames = New-Object System.Collections.Generic.HashSet[string]
$accountFiles = Get-ChildItem -Path (Get-Location) -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
$_.Name -match 'launcher_accounts\.json|launcher_profiles\.json|accounts\.json|usercache\.json'
}
$patterns = @(
'"displayName"\s*:\s*"([^"]+)"',
'"username"\s*:\s*"([^"]+)"',
'"playerName"\s*:\s*"([^"]+)"',
'"selectedUser"\s*:\s*"([^"]+)"',
'"name"\s*:\s*"([A-Za-z0-9_]{3,16})"'
)
$blacklist = @(
"name","username","displayName","profiles","profile",
"settings","client","server","version","enabled",
"modules","libraries","javaArgs","arguments",
"objects","downloads","features","logging",
"textures","values","rules","entries"
)
foreach ($file in $accountFiles) {
try {
$content = Get-Content $file.FullName -Raw -ErrorAction SilentlyContinue
if ([string]::IsNullOrWhiteSpace($content)) {
continue
}
foreach ($pattern in $patterns) {
[regex]::Matches($content, $pattern, "IgnoreCase") | ForEach-Object {
$name = $_.Groups[1].Value.Trim()
if (
$name -match '^[A-Za-z0-9_]{3,16}$' -and
$blacklist -notcontains $name
) {
[void]$nicknames.Add($name)
}
}
}
}
catch { }
}
if ($nicknames.Count -gt 0) {
$nicknames |
Sort-Object |
ForEach-Object {
Write-Line $_
}
}
else {
Write-Line "Не найдено"
}
}
catch {
Write-Line "Не найдено"
}
Write-Line ""
Write-Line "============================================="
Write-Line "script by unheardvoice"
Write-Line "============================================="