All pastes #956568 Raw Edit

Untitled

public text v1 · immutable
#956568 ·published 2008-03-25 12:27 UTC
rendered paste body
.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