Update main.ps1

This commit is contained in:
egieb
2025-01-17 19:03:50 +00:00
committed by GitHub
parent 7889c916f6
commit fd3c2cd622
+249 -294
View File
@@ -1,16 +1,19 @@
<# ================================================ POWERSHELL MEMZ PRANK ======================================================== <# ================================================ POWERSHELL MEMZ PRANK ========================================================
SYNOPSIS SYNOPSIS
This script plays random windows default sounds and various screen effects until it is closed (in task manager) This script displays various screen effects similar to the classic MEMZ trojan (Non-Destructive).
Also randomly plays the Windows Chord.wav sound endlessly
USAGE USAGE
Run the script 1. Run the script.
stop in task manager (when console is hidden) 2. Hold down the Escape key for 5 seconds to exit the script.
#> #>
# Hide the powershell console # Hide the powershell console (1 = yes)
$hide = 1 $hide = 1
# Code to hide the console on Windows 10 and 11
if ($hide -eq 1){ if ($hide -eq 1){
$Async = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);' $Async = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
$Type = Add-Type -MemberDefinition $Async -name Win32ShowWindowAsync -namespace Win32Functions -PassThru $Type = Add-Type -MemberDefinition $Async -name Win32ShowWindowAsync -namespace Win32Functions -PassThru
@@ -27,309 +30,261 @@ if ($hide -eq 1){
} }
} }
# Turn off screen for short period # Create the balloon popup (bottom right)
$joboff = { $baloonPopup = {
Add-Type -AssemblyName System.Drawing
Add-Type -TypeDefinition 'using System;using System.Runtime.InteropServices;public class Screen {[DllImport("user32.dll")]public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);public static void TurnOff() {SendMessage(0xFFFF, 0x0112, 0xF170, 2);}}' Add-Type -AssemblyName System.Windows.Forms
[Screen]::TurnOff() $notify = New-Object System.Windows.Forms.NotifyIcon
$notify.Icon = [System.Drawing.SystemIcons]::Warning
$notify.Visible = $true
$balloonTipTitle = "System Error (0x00060066e)"
$balloonTipText = "WARNING! - System Breach Detected"
$notify.ShowBalloonTip(30000, $balloonTipTitle, $balloonTipText, [System.Windows.Forms.ToolTipIcon]::WARNING)
} }
# Balloon popup # Paint error icons wherever the mouse is located
$job0 = { $errorIcons = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Drawing Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms $desktopHandle = [System.IntPtr]::Zero
$notify = New-Object System.Windows.Forms.NotifyIcon $graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$notify.Icon = [System.Drawing.SystemIcons]::Warning $icon = [System.Drawing.Icon]::ExtractAssociatedIcon("C:\Windows\System32\DFDWiz.exe")
$notify.Visible = $true function Get-MousePosition {
$balloonTipTitle = "System Error (0x00060066e)" $point = [System.Windows.Forms.Cursor]::Position
$balloonTipText = "WARNING! - System Breach Detected" return $point
$notify.ShowBalloonTip(30000, $balloonTipTitle, $balloonTipText, [System.Windows.Forms.ToolTipIcon]::WARNING) }
while ($true) {
} $mousePosition = Get-MousePosition
$graphics.DrawIcon($icon, $mousePosition.X, $mousePosition.Y)
# Mouse error icon Start-Sleep -Milliseconds 50
$job1 = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon("C:\Windows\System32\DFDWiz.exe")
function Get-MousePosition {
$point = [System.Windows.Forms.Cursor]::Position
return $point
}
while ($true) {
$mousePosition = Get-MousePosition
$graphics.DrawIcon($icon, $mousePosition.X, $mousePosition.Y)
Start-Sleep -Milliseconds 50
}
$graphics.Clear([System.Drawing.Color]::Transparent)
$graphics.Dispose()
$icon.Dispose()
}
# Screen Glitches
$job2 = {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$Filett = "$env:temp\SC.png"
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
$bitmap.Save($Filett, [System.Drawing.Imaging.ImageFormat]::png)
$savedImage = [System.Drawing.Image]::FromFile($Filett)
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$random = New-Object System.Random
function Get-RandomSize {
return $random.Next(100, 500)
}
function Get-RandomPosition {
param (
[int]$rectWidth,
[int]$rectHeight
)
$x = $random.Next(0, $Width - $rectWidth)
$y = $random.Next(0, $Height - $rectHeight)
return [PSCustomObject]@{X = $x; Y = $y}
}
while ($true) {
$rectWidth = Get-RandomSize
$rectHeight = Get-RandomSize
$srcX = $random.Next(0, $savedImage.Width - $rectWidth)
$srcY = $random.Next(0, $savedImage.Height - $rectHeight)
$destPosition = Get-RandomPosition -rectWidth $rectWidth -rectHeight $rectHeight
$srcRect = New-Object System.Drawing.Rectangle $srcX, $srcY, $rectWidth, $rectHeight
$destRect = New-Object System.Drawing.Rectangle $destPosition.X, $destPosition.Y, $rectWidth, $rectHeight
$graphics.DrawImage($savedImage, $destRect, $srcRect, [System.Drawing.GraphicsUnit]::Pixel)
Start-Sleep -Milliseconds 100
}
$savedImage.Dispose()
$graphics.Dispose()
$bitmap.Dispose()
$graphic.Dispose()
}
# Circular spinning colors
$job3 = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$Width = $screen.Bounds.Width
$Height = $screen.Bounds.Height
$X = [math]::Round($Width / 2)
$Y = [math]::Round($Height / 2)
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
function Get-RandomColor {
$random = New-Object System.Random
$r = $random.Next(0, 256)
$g = $random.Next(0, 256)
$b = $random.Next(0, 256)
return [System.Drawing.Color]::FromArgb($r, $g, $b)
}
$angle = 0
$length = 10
while ($true) {
$pen = New-Object System.Drawing.Pen((Get-RandomColor), 20)
$endX1 = $X + [math]::Round($length * [math]::Cos([math]::PI * $angle / 180))
$endY1 = $Y + [math]::Round($length * [math]::Sin([math]::PI * $angle / 180))
$oppositeAngle = $angle + 180
$endX2 = $X + [math]::Round($length * [math]::Cos([math]::PI * $oppositeAngle / 180))
$endY2 = $Y + [math]::Round($length * [math]::Sin([math]::PI * $oppositeAngle / 180))
$graphics.DrawLine($pen, $X, $Y, $endX1, $endY1)
$graphics.DrawLine($pen, $X, $Y, $endX2, $endY2)
$random = New-Object System.Random
$angle += $random.Next(1, 90)
$length++
Start-Sleep -Milliseconds 10
if ($angle -ge 360) {
$angle = 0
} }
$graphics.Clear([System.Drawing.Color]::Transparent)
$graphics.Dispose()
$icon.Dispose()
}
if ($length -ge $height) { # Take a snapshot of the desktop and paste blocks in random places
$length = 10 $screenBlocks = {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$File = "$env:temp\screen.png"
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
$bitmap.Save($File, [System.Drawing.Imaging.ImageFormat]::png)
$savedImage = [System.Drawing.Image]::FromFile($File)
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$random = New-Object System.Random
function Get-RandomSize {
return $random.Next(100, 500)
}
function Get-RandomPosition {
param ([int]$rectWidth,[int]$rectHeight)
$x = $random.Next(0, $Width - $rectWidth)
$y = $random.Next(0, $Height - $rectHeight)
return [PSCustomObject]@{X = $x; Y = $y}
} }
} function Invert-Colors {
param ([System.Drawing.Bitmap]$bitmap,[System.Drawing.Rectangle]$rect)
$pen.Dispose() for ($x = $rect.X; $x -lt $rect.X + $rect.Width; $x++) {
$graphics.Dispose() for ($y = $rect.Y; $y -lt $rect.Y + $rect.Height; $y++) {
$pixelColor = $bitmap.GetPixel($x, $y)
} $invertedColor = [System.Drawing.Color]::FromArgb(255, 255 - $pixelColor.R, 255 - $pixelColor.G, 255 - $pixelColor.B)
$bitmap.SetPixel($x, $y, $invertedColor)
# Play random sounds }
$job4 = {
while($true){
$Interval = 1
Get-ChildItem C:\Windows\Media\ -File -Filter *.wav | Select-Object -ExpandProperty Name | Foreach-Object {
Start-Sleep -Seconds $Interval
(New-Object Media.SoundPlayer "C:\WINDOWS\Media\$_").Play()
}
}
}
# Display text
$job5 = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$Width = $screen.Bounds.Width
$Height = $screen.Bounds.Height
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$random = New-Object System.Random
function Get-RandomFontSize {
return $random.Next(20, 101)
}
function Get-RandomPosition {
param (
[int]$textWidth,
[int]$textHeight
)
$x = $random.Next(0, $Width - $textWidth)
$y = $random.Next(0, $Height - $textHeight)
return [PSCustomObject]@{X = $x; Y = $y}
}
$text = "SYSTEM FAIL!"
$textColor = [System.Drawing.Color]::Red
while ($true) {
$fontSize = Get-RandomFontSize
$font = New-Object System.Drawing.Font("Arial", $fontSize, [System.Drawing.FontStyle]::Bold)
$textSize = $graphics.MeasureString($text, $font)
$textWidth = [math]::Ceiling($textSize.Width)
$textHeight = [math]::Ceiling($textSize.Height)
$position = Get-RandomPosition -textWidth $textWidth -textHeight $textHeight
$graphics.DrawString($text, $font, (New-Object System.Drawing.SolidBrush($textColor)), $position.X, $position.Y)
$font.Dispose()
Start-Sleep -Milliseconds 500
}
}
# Negative Screen Glitches
$job6 = {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$Filett = "$env:temp\SC.png"
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
$bitmap.Save($Filett, [System.Drawing.Imaging.ImageFormat]::png)
$savedImage = [System.Drawing.Image]::FromFile($Filett)
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$random = New-Object System.Random
function Get-RandomSize {
return $random.Next(100, 500)
}
function Get-RandomPosition {
param (
[int]$rectWidth,
[int]$rectHeight
)
$x = $random.Next(0, $Width - $rectWidth)
$y = $random.Next(0, $Height - $rectHeight)
return [PSCustomObject]@{X = $x; Y = $y}
}
function Invert-Colors {
param (
[System.Drawing.Bitmap]$bitmap,
[System.Drawing.Rectangle]$rect
)
for ($x = $rect.X; $x -lt $rect.X + $rect.Width; $x++) {
for ($y = $rect.Y; $y -lt $rect.Y + $rect.Height; $y++) {
$pixelColor = $bitmap.GetPixel($x, $y)
$invertedColor = [System.Drawing.Color]::FromArgb(255, 255 - $pixelColor.R, 255 - $pixelColor.G, 255 - $pixelColor.B)
$bitmap.SetPixel($x, $y, $invertedColor)
} }
} }
} while ($true) {
while ($true) { $rectWidth = Get-RandomSize
$rectHeight = Get-RandomSize
$rectWidth = Get-RandomSize $srcX = $random.Next(0, $savedImage.Width - $rectWidth)
$rectHeight = Get-RandomSize $srcY = $random.Next(0, $savedImage.Height - $rectHeight)
$srcX = $random.Next(0, $savedImage.Width - $rectWidth) $destPosition = Get-RandomPosition -rectWidth $rectWidth -rectHeight $rectHeight
$srcY = $random.Next(0, $savedImage.Height - $rectHeight) $srcRect = New-Object System.Drawing.Rectangle $srcX, $srcY, $rectWidth, $rectHeight
$destPosition = Get-RandomPosition -rectWidth $rectWidth -rectHeight $rectHeight $destRect = New-Object System.Drawing.Rectangle $destPosition.X, $destPosition.Y, $rectWidth, $rectHeight
$srcRect = New-Object System.Drawing.Rectangle $srcX, $srcY, $rectWidth, $rectHeight $graphics.DrawImage($savedImage, $destRect, $srcRect, [System.Drawing.GraphicsUnit]::Pixel)
$destRect = New-Object System.Drawing.Rectangle $destPosition.X, $destPosition.Y, $rectWidth, $rectHeight Start-Sleep -M 50
$srcBitmap = $savedImage.Clone($srcRect, $savedImage.PixelFormat) $rectWidth = Get-RandomSize
Invert-Colors -bitmap $srcBitmap -rect (New-Object System.Drawing.Rectangle 0, 0, $rectWidth, $rectHeight) $rectHeight = Get-RandomSize
$graphics.DrawImage($srcBitmap, $destRect) $srcX = $random.Next(0, $savedImage.Width - $rectWidth)
$srcBitmap.Dispose() $srcY = $random.Next(0, $savedImage.Height - $rectHeight)
Start-Sleep -Milliseconds 100 $destPosition = Get-RandomPosition -rectWidth $rectWidth -rectHeight $rectHeight
$srcRect = New-Object System.Drawing.Rectangle $srcX, $srcY, $rectWidth, $rectHeight
$destRect = New-Object System.Drawing.Rectangle $destPosition.X, $destPosition.Y, $rectWidth, $rectHeight
$srcBitmap = $savedImage.Clone($srcRect, $savedImage.PixelFormat)
Invert-Colors -bitmap $srcBitmap -rect (New-Object System.Drawing.Rectangle 0, 0, $rectWidth, $rectHeight)
$graphics.DrawImage($srcBitmap, $destRect)
$srcBitmap.Dispose()
Start-Sleep -M 50
}
$savedImage.Dispose()
$graphics.Dispose()
$bitmap.Dispose()
$graphic.Dispose()
} }
# Spam the Windows chord sound randomly
$SoundSpam = {
$i = 250
$random = New-Object System.Random
while($true){
Get-ChildItem C:\Windows\Media\ -File -Filter *hor*.wav | Select-Object -ExpandProperty Name | Foreach-Object {
Start-Sleep -M $i
(New-Object Media.SoundPlayer "C:\WINDOWS\Media\$_").Play()
}
$i = $random.Next(100, 300)
}
} }
# Start all jobs # Display "SYSTEM FAIL!" messages in random sizes everywhere
Start-Job -ScriptBlock $job0 $failMessage = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$Width = $screen.Bounds.Width
$Height = $screen.Bounds.Height
$desktopHandle = [System.IntPtr]::Zero
$graphics = [System.Drawing.Graphics]::FromHwnd($desktopHandle)
$random = New-Object System.Random
function Get-RandomFontSize {
return $random.Next(20, 101)
}
function Get-RandomPosition {
param ([int]$textWidth,[int]$textHeight)
$x = $random.Next(0, $Width - $textWidth)
$y = $random.Next(0, $Height - $textHeight)
return [PSCustomObject]@{X = $x; Y = $y}
}
$text = "SYSTEM FAIL!"
$textColor = [System.Drawing.Color]::Red
while ($true) {
$fontSize = Get-RandomFontSize
$font = New-Object System.Drawing.Font("Arial", $fontSize, [System.Drawing.FontStyle]::Bold)
$textSize = $graphics.MeasureString($text, $font)
$textWidth = [math]::Ceiling($textSize.Width)
$textHeight = [math]::Ceiling($textSize.Height)
$position = Get-RandomPosition -textWidth $textWidth -textHeight $textHeight
$graphics.DrawString($text, $font, (New-Object System.Drawing.SolidBrush($textColor)), $position.X, $position.Y)
$font.Dispose()
Start-Sleep -M 250
}
}
# Take a snapshot of the desktop and shrink towards the center
$screenmelt = {
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class NativeMethods {
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern bool DeleteDC(IntPtr hdc);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern bool DeleteObject(IntPtr hObject);
public const int SRCCOPY = 0x00CC0020;
}
"@
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$desktopDC = [NativeMethods]::GetDC([IntPtr]::Zero)
$memDC = [NativeMethods]::CreateCompatibleDC($desktopDC)
$bitmap = [NativeMethods]::CreateCompatibleBitmap($desktopDC, $Width, $Height)
[NativeMethods]::SelectObject($memDC, $bitmap)
[NativeMethods]::BitBlt($memDC, 0, 0, $Width, $Height, $desktopDC, $Left, $Top, [NativeMethods]::SRCCOPY)
$fallSpeed = 20
$shrinkFactor = 0.96
while($true){
$currentOffsetX1 = 0
$currentOffsetY1 = 0
$currentWidth1 = $Width
$currentHeight1 = $Height
$currentOffsetX2 = $Width
$currentOffsetY2 = $Height
$currentWidth2 = $Width
$currentHeight2 = $Height
while ($currentOffsetX1 -lt $Width -and $currentOffsetY1 -lt $Height -and
$currentOffsetX2 -gt 0 -and $currentOffsetY2 -gt 0) {
$currentWidth1 = [math]::floor($currentWidth1 * $shrinkFactor)
$currentHeight1 = [math]::floor($currentHeight1 * $shrinkFactor)
$currentWidth2 = [math]::floor($currentWidth2 * $shrinkFactor)
$currentHeight2 = [math]::floor($currentHeight2 * $shrinkFactor)
[NativeMethods]::BitBlt($desktopDC, $currentOffsetX1, $currentOffsetY1, $currentWidth1, $currentHeight1,
$memDC, 0, 0, [NativeMethods]::SRCCOPY)
[NativeMethods]::BitBlt($desktopDC, $currentOffsetX2 - $currentWidth2, $currentOffsetY2 - $currentHeight2, $currentWidth2, $currentHeight2,
$memDC, 0, 0, [NativeMethods]::SRCCOPY)
$currentOffsetX1 += $fallSpeed
$currentOffsetY1 += $fallSpeed
$currentOffsetX2 -= $fallSpeed
$currentOffsetY2 -= $fallSpeed
Start-Sleep -Milliseconds 100
}
}
[NativeMethods]::DeleteDC($memDC)
[NativeMethods]::ReleaseDC([IntPtr]::Zero, $desktopDC)
[NativeMethods]::DeleteObject($bitmap)
}
# Start jobs intermitently
sleep 5 sleep 5
Start-Job -ScriptBlock $joboff Start-Job -ScriptBlock $baloonPopup
sleep 5 Start-Job -ScriptBlock $errorIcons
Start-Job -ScriptBlock $job1
sleep 10 sleep 10
Start-Job -ScriptBlock $job4 Start-Job -ScriptBlock $screenBlocks
Start-Job -ScriptBlock $job2
sleep 5 sleep 5
Start-Job -ScriptBlock $job3 Start-Job -ScriptBlock $SoundSpam
sleep 5 Start-Job -ScriptBlock $failMessage
Start-Job -ScriptBlock $job5
sleep 5 sleep 5
Start-Job -ScriptBlock $job6 Start-Job -ScriptBlock $screenmelt
# Exit the script when the Escape key is held down for 5 seconds or more
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Keyboard{
[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);
}
"@
$VK_ESCAPE = 0x1B
$startTime = $null
while ($true) {
Start-Sleep -M 100
$isEscapePressed = [Keyboard]::GetAsyncKeyState($VK_ESCAPE) -lt 0
if ($isEscapePressed) {
if (-not $startTime) {
$startTime = Get-Date
}
$elapsedTime = (Get-Date) - $startTime
if ($elapsedTime.TotalSeconds -ge 5) {
exit
}
} else {
$startTime = $null
}
}
# keep script alive
pause