.686 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\gdi32.inc includelib \masm32\lib\gdi32.lib fadeIn PROTO :DWORD fadeOut PROTO :DWORD dmgWinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD isClose PROTO :DWORD,:DWORD .const ID_DMGTXT equ 100h ID_SET equ 200h ID_DTYPE equ 300h DELAY_VALUE equ 30 .data dwdEMI1 dd 0055FB0Ch dwdEMI2 dd 0071151Ch dwdEMI3 dd 00711581h rtdEMI1 dd 0055FB12h rtdEMI2 dd 00711521h rtdEMI3 dd 00711586h dwDEM dd 0055FAF7h rtDEM dd 0055FB06h dwNKB dd 006D539Bh dwPG dd 006CCE74h rtPGChoice dd 006CCE79h dwBlink dd 006BD651h callz1 dd 0045595Bh callz2 dd 00455A10h rtBlink dd 006BD697h hInstance dd 0 commandLine dd 0 dmghWnd dd 0 dvtype dd 0h className db "PGClass", 0 windowName db " PG Pack v.51", 0 button3Text db "dEMI?", 0 button2Text db "Boss?", 0 buttonClass db "Button", 0 buttonText db "On", 0 buttonText2 db "Off", 0 hWndButton3 dd 0 hWndButton2 dd 0 hWndButton dd 0 hWndArialB dd 0 szUser32 db "User32.dll", 0 SLWA db "SetLayeredWindowAttributes", 0 pSLWA dd 0 Value dd 0 dwCx dd 0 dwCy dd 0 guiBool1 dd 0 guiBool2 dd 0 guiBool3 dd 0 strctLOG LOGFONT <-0FFFFFFF5h, 0, 0, 0, 02BCh, 0, 0, 0, 0, 03h, 02h, 01h, 016h, "Arial"> rct RECT<> pt POINT<> rctwin RECT <> rctScr RECT <> .data? numBuff db 011h dup (?) .code OPTION PROLOGUE:NONE OPTION EPILOGUE:NONE dEMI1 proc mov eax, dword ptr ds:[00850460h] push eax mov eax, dword ptr ds:[eax+644h] mov dword ptr ds:[ebx+450h], eax cmp dword ptr ds:[dvtype], 0 je dvzero cmp dword ptr ds:[dvtype], 1 je dvone sub eax, 100h jmp dvzero dvone: add eax, 100h dvzero: mov dword ptr ds:[ebx+448h], eax pop eax mov eax, dword ptr ds:[eax+648h] mov dword ptr ds:[ebx+44Ch], eax mov dword ptr ds:[ebx+454h], eax jmp dword ptr ds:[rtdEMI1] dEMI1 endp dEMI2 proc push ecx mov ecx, dword ptr ds:[00850460h] add ecx,644h cmp ebx, ecx je normalx mov ecx, [ecx] cmp dword ptr ds:[dvtype], 0 je uvzero cmp dword ptr ds:[dvtype], 1 je uvone sub ecx, 100h jmp uvzero uvone: add ecx, 100h uvzero: cmp [ebx],ecx je endx normalx: mov [ebx],eax endx: pop ecx mov edi, [ebp+10h] jmp dword ptr ds:[rtdEMI2] dEMI2 endp dEMI3 proc push ecx mov ecx, dword ptr ds:[00850460h] add ecx,648h cmp edi, ecx je normaly mov ecx, [ecx] cmp [edi],ecx je endy normaly: mov [edi],eax endy: pop ecx mov ebx, dword ptr ds:[ebp+14h] jmp dword ptr ds:[rtdEMI3] dEMI3 endp Blinker proc jle outzor mov ecx, edi call dword ptr ds:[callz1] mov esi, eax sub esi, 01Eh push esi mov ecx, edi call dword ptr ds:[callz2] test esi, esi jle outzor push 0 mov ecx, edi call dword ptr ds:[callz2] outzor: mov ecx, edi call dword ptr ds:[callz1] test eax, eax mov ecx, edi call dword ptr ds:[callz1] mov esi, eax add esi, 01Eh push esi mov ecx, edi call dword ptr ds:[callz2] test esi, esi jmp dword ptr ds:[rtBlink] Blinker endp pgChoice proc cmp dword ptr ds:[guiBool2], 0 jnz @1 mov eax, VALUEh ;Secret Value. Will not assemble as is. jmp @2 @1: mov eax, 0C8h @2: jmp dword ptr ds:[rtPGChoice] pgChoice endp dem proc push edx mov edx, dword ptr ds:[00850460h] lea edx, [edx+0644h] mov ecx, [edx] mov edx, dword ptr ds:[00850460h] lea edx, [edx+0648h] lea eax, [edx] mov eax, [eax] pop edx jmp dword ptr ds:[rtDEM] dem endp OPTION PROLOGUE:PrologueDef OPTION EPILOGUE:EpilogueDef setPG proc mov eax, dword ptr ds:[dwNKB] mov byte ptr ds:[eax], 07Dh mov eax, dword ptr ds:[dwBlink] mov byte ptr ds:[eax], 0E9h mov ecx, offset Blinker add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx mov eax, dword ptr ds:[dwBlink] add eax, 5 mov dword ptr ds:[eax], 090909090h mov eax, dword ptr ds:[dwPG] mov byte ptr ds:[eax], 0E9h mov ecx, offset pgChoice add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx ret setPG endp unSetPG proc mov eax, dword ptr ds:[dwdEMI1] mov word ptr ds:[eax], 08389h add eax, 2 mov dword ptr ds:[eax], 0454h mov eax, dword ptr ds:[dwdEMI2] mov byte ptr ds:[eax], 089h inc eax mov dword ptr ds:[eax], 0107D8B03h mov eax, dword ptr ds:[dwdEMI3] mov byte ptr ds:[eax], 089h inc eax mov dword ptr ds:[eax], 0145D8B07h mov eax, dword ptr ds:[dwDEM] mov word ptr ds:[eax], 08B8Bh add eax, 2 mov dword ptr ds:[eax], 00448h mov eax, dword ptr ds:[dwPG] mov byte ptr ds:[eax], 0E8h inc eax mov dword ptr ds:[eax], 0FFD45ACBh mov eax, dword ptr ds:[dwBlink] mov dword ptr ds:[eax], 0CF8B217Eh add eax, 04h mov byte ptr ds:[eax], 0E8h inc eax mov dword ptr ds:[eax], 0FFD98301h ret unSetPG endp setDEMI proc mov eax, dword ptr ds:[dwdEMI1] mov byte ptr ds:[eax], 0E9h mov ecx, offset dEMI1 add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx mov eax, dword ptr ds:[dwdEMI1] add eax, 5 mov byte ptr ds:[eax], 090h mov eax, dword ptr ds:[dwdEMI2] mov byte ptr ds:[eax], 0E9h mov ecx, offset dEMI2 add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx mov eax, dword ptr ds:[dwdEMI3] mov byte ptr ds:[eax], 0E9h mov ecx, offset dEMI3 add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx ret setDEMI endp setDEM proc mov eax, dword ptr ds:[dwDEM] mov byte ptr ds:[eax], 0E9h mov ecx, offset dem add eax, 5 sub ecx, eax sub eax, 4 mov dword ptr ds:[eax], ecx mov eax, dword ptr ds:[dwDEM] add eax, 5 mov byte ptr ds:[eax], 090h ret setDEM endp fadeIn proc hWin:DWORD invoke GetWindowLong, hWin, GWL_EXSTYLE or eax, WS_EX_LAYERED invoke SetWindowLong, hWin, GWL_EXSTYLE, eax invoke GetModuleHandle, addr szUser32 invoke GetProcAddress, eax, addr SLWA mov dword ptr ds:[pSLWA], eax push LMA_ALPHA push 0 push 0 push hWin call pSLWA mov dword ptr ds:[Value], 90 invoke ShowWindow, hWin, SW_SHOWNA doloop: push LMA_COLORKEY + LMA_ALPHA push Value push Value push hWin call pSLWA invoke Sleep, DELAY_VALUE add Value, 15 cmp Value, 255 jne doloop push LMA_ALPHA push 255 push 0 push hWin call pSLWA ret fadeIn endp fadeOut proc hWin:DWORD invoke GetWindowLong, hWin, GWL_EXSTYLE or eax,WS_EX_LAYERED invoke SetWindowLong, hWin, GWL_EXSTYLE, eax invoke GetModuleHandle, ADDR szUser32 invoke GetProcAddress, eax, ADDR SLWA mov dword ptr ds:[pSLWA], eax push LMA_ALPHA push 255 push 0 push hWin call pSLWA mov dword ptr ds:[Value], 255 doloop: push LMA_COLORKEY + LMA_ALPHA push Value push Value push hWin call pSLWA invoke Sleep, DELAY_VALUE sub dword ptr ds:[Value], 15 cmp dword ptr ds:[Value], 0 jne doloop ret fadeOut endp isClose proc dwA:DWORD, dwX:DWORD mov eax, dwA sub eax, dwX bt eax, 31 jnc @f neg eax @@: sub eax, 16 js @f mov eax, FALSE jmp done @@: mov eax, TRUE done: ret isClose endp WndProc proc hWnd:HWND, uMSG:UINT, wParam:WPARAM, lParam:LPARAM .IF uMSG == WM_CREATE invoke fadeIn, dword ptr ds:[hWnd] invoke CreateWindowEx, NULL, addr buttonClass, addr button2Text, WS_CHILD or WS_VISIBLE or BS_CHECKBOX, 08h, 05h, 032h, 0Bh, dword ptr ds:[hWnd], ID_DMGTXT, hInstance, NULL mov dword ptr ds:[hWndButton2], eax invoke CreateWindowEx, NULL, addr buttonClass, addr buttonText, WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON or BS_CENTER or BS_VCENTER or BS_PUSHLIKE, 05h, 025h, 08Ah, 014h, dword ptr ds:[hWnd], ID_SET, hInstance, NULL mov dword ptr ds:[hWndButton], eax invoke CreateWindowEx, NULL, addr buttonClass, addr button3Text, WS_CHILD or WS_VISIBLE or BS_CHECKBOX, 08h, 015h, 032h, 0Bh, dword ptr ds:[hWnd], ID_DTYPE, hInstance, NULL mov dword ptr ds:[hWndButton3], eax invoke CreateFontIndirect, addr strctLOG mov dword ptr ds:[hWndArialB], eax invoke SendMessage, dword ptr ds:[hWndButton3], WM_SETFONT, dword ptr ds:[hWndArialB], 0 invoke SendMessage, dword ptr ds:[hWndButton2], WM_SETFONT, dword ptr ds:[hWndArialB], 0 invoke SendMessage, dword ptr ds:[hWndButton], WM_SETFONT, dword ptr ds:[hWndArialB], 0 .ELSEIF uMSG == WM_COMMAND mov eax, dword ptr ds:[wParam] .IF ax == ID_SET shr eax, 010h .IF ax == BN_CLICKED cmp dword ptr ds:[guiBool1], 0h jnz @2 @1: invoke SetWindowText, dword ptr ds:[hWndButton], addr buttonText2 xor dword ptr ds:[guiBool1], 01h call setPG cmp dword ptr ds:[guiBool3], 01h jnz doDEM call setDEMI jmp @3 doDEM: call setDEM jmp @3 @2: invoke SetWindowText, dword ptr ds:[hWndButton], addr buttonText xor dword ptr ds:[guiBool1], 01h call unSetPG @3: .ENDIF .ELSEIF ax == ID_DMGTXT shr eax, 010h .IF ax == BN_CLICKED cmp dword ptr ds:[guiBool2], 0h jnz @5 @4: invoke SendMessage, dword ptr ds:[hWndButton2], BM_SETCHECK, BST_CHECKED, 0 xor dword ptr ds:[guiBool2], 01h jmp @6 @5: invoke SendMessage, dword ptr ds:[hWndButton2], BM_SETCHECK, BST_UNCHECKED, 0 xor dword ptr ds:[guiBool2], 01h @6: .ENDIF .ELSEIF ax == ID_DTYPE shr eax, 010h .IF ax == BN_CLICKED cmp dword ptr ds:[guiBool1], 0h jz @7 jmp @f @7: cmp dword ptr ds:[guiBool3], 0h jnz @8 invoke SendMessage, dword ptr ds:[hWndButton3], BM_SETCHECK, BST_CHECKED, 0 xor dword ptr ds:[guiBool3], 01h jmp @f @8: invoke SendMessage, dword ptr ds:[hWndButton3], BM_SETCHECK, BST_UNCHECKED, 0 xor dword ptr ds:[guiBool3], 01h @@: .ENDIF .ENDIF .ELSEIF uMSG == WM_CLOSE invoke fadeOut, dword ptr ds:[hWnd] invoke DeleteObject, dword ptr ds:[hWndArialB] invoke DestroyWindow, dword ptr ds:[hWnd] .ELSEIF uMSG == WM_DESTROY invoke PostQuitMessage, NULL ret .ELSEIF uMSG == WM_ENTERSIZEMOVE invoke GetWindowRect, hWnd, ADDR rctwin invoke GetCursorPos, addr pt mov eax, dword ptr ds:[pt.x] mov edx, dword ptr ds:[pt.y] sub eax, dword ptr ds:[rctwin.left] sub edx, dword ptr ds:[rctwin.top] mov dword ptr ds:[dwCx], eax mov dword ptr ds:[dwCy], edx .ELSEIF uMSG == WM_MOVING invoke GetCursorPos, addr pt mov eax, dword ptr ds:[pt.x] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx] add ecx, dword ptr ds:[dwCx] sub eax, ecx push eax mov eax, dword ptr ds:[pt.y] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx+4] add ecx, dword ptr ds:[dwCy] sub eax, ecx pop ecx invoke OffsetRect, lParam, ecx, eax invoke SystemParametersInfo, SPI_GETWORKAREA, NULL, addr rctScr, NULL mov edx, dword ptr ds:[lParam] mov edx, [edx] Invoke isClose, edx, rctScr. left .IF EAX == TRUE mov edx, dword ptr ds:[rctScr.left] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx] sub edx, ecx invoke OffsetRect, lParam, edx, 0 jmp @F .ENDIF mov edx, dword ptr ds:[lParam] mov edx, [edx+8] invoke isClose, edx, rctScr.right .IF EAX == TRUE mov edx, dword ptr ds:[rctScr.right] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx+8] sub edx, ecx invoke OffsetRect, lParam, edx, 0 .ENDIF @@: mov edx, dword ptr ds:[lParam] mov edx, [edx+4] invoke isClose, edx, rctScr.top .IF EAX == TRUE mov edx, dword ptr ds:[rctScr.top] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx+4] sub edx, ecx invoke OffsetRect, lParam, 0, edx jmp @f .ENDIF mov edx, dword ptr ds:[lParam] mov edx, [edx+12] invoke isClose, edx, rctScr.bottom .IF EAX == TRUE mov edx, dword ptr ds:[rctScr.bottom] mov ecx, dword ptr ds:[lParam] mov ecx, [ecx+12] sub edx, ecx invoke OffsetRect, lParam, 0, edx .ENDIF @@: .ENDIF invoke DefWindowProc, hWnd, uMSG, wParam, lParam ret WndProc endp dmgWinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, cmdLine:LPSTR, cmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG mov dword ptr ds:[wc.cbSize], SIZEOF WNDCLASSEX mov dword ptr ds:[wc.style], CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW mov dword ptr ds:[wc.lpfnWndProc], offset WndProc mov dword ptr ds:[wc.cbClsExtra], NULL mov dword ptr ds:[wc.cbWndExtra], NULL push hInstance pop wc.hInstance mov dword ptr ds:[wc.hbrBackground], COLOR_BTNFACE+1 mov dword ptr ds:[wc.lpszMenuName], NULL mov dword ptr ds:[wc.lpszClassName], OFFSET className invoke LoadIcon, NULL, IDI_APPLICATION mov dword ptr ds:[wc.hIcon], eax mov dword ptr ds:[wc.hIconSm], eax invoke LoadCursor, NULL, IDC_ARROW mov dword ptr ds:[wc.hCursor], eax invoke RegisterClassEx, addr wc invoke GetDesktopWindow invoke GetWindowRect, eax, addr rct mov eax, dword ptr ds:[rct.right] sub eax, 09Ah invoke CreateWindowEx, WS_EX_TOOLWINDOW or WS_EX_CONTROLPARENT, addr className, addr windowName, WS_OVERLAPPED or WS_CLIPSIBLINGS or WS_CLIPCHILDREN or WS_SYSMENU or WS_CAPTION, eax, 047h, 09Ah, 056h, NULL, NULL, dword ptr ds:[hInst], NULL mov dword ptr ds:[dmghWnd], eax invoke ShowWindow, dword ptr ds:[dmghWnd], SW_SHOWNORMAL invoke UpdateWindow, dword ptr ds:[dmghWnd] msgLoop: invoke GetMessage, addr msg, NULL, 0, 0 cmp eax, 0 jz endmsgLoop invoke TranslateMessage, addr msg invoke DispatchMessage, addr msg jmp msgLoop endmsgLoop: mov eax, dword ptr ds:[msg.wParam] ret dmgWinMain endp windowCreate proc invoke GetModuleHandle, NULL mov dword ptr ds:[hInstance], eax invoke GetCommandLine mov dword ptr ds:[commandLine], eax invoke dmgWinMain, dword ptr ds:[hInstance], NULL, dword ptr ds:[commandLine], SW_SHOWDEFAULT invoke ExitThread, NULL windowCreate endp DllMain proc hinstDLL:HINSTANCE, fdwReason:DWORD, lpvReserved:LPVOID cmp dword ptr ds:[fdwReason], DLL_PROCESS_ATTACH jne @f invoke CreateThread, NULL, NULL, addr windowCreate, NULL, NULL, NULL @@: mov eax, 1 pop ebp retn 0Ch DllMain endp end DllMain