Пакости на Asm ;)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 23 Jun 2007.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вот привожу пример на FASM какие пакости можно делать с помошью функций DefineDosDevice.
    Также на базе исходника можно сделать защиту от ламеров (прятать диск в системе).
    Прога умеет прятать и обратно показывать жесткие диски. Прячет до первой перезагрузки. Размер проги - 2кб

    Code:
    ; Автор SLESH ([email protected]) ICQ: 266-334-734
    format PE GUI 4.0
    include 'd:\coding\fasm\include\win32ax.inc'
    .code
    start:
    invoke GetModuleHandle,0
    invoke DialogBoxParam,eax,1,HWND_DESKTOP,mainss,0
    
    proc mainss hwnd,msg,wparam,lparam
     push ebx esi edi
     cmp [msg],WM_INITDIALOG
     je wminitdialog
     cmp [msg],WM_COMMAND
     je wmcommand
     cmp [msg],WM_CLOSE
     je wmclose
     xor eax,eax
     jmp finish
    wminitdialog:
     jmp processed
    wmcommand:
     cmp [wparam],BN_CLICKED shl 16 + 100
     je drv_show
     cmp [wparam],BN_CLICKED shl 16 + 101
     je drv_hide
     cmp [wparam],BN_CLICKED shl 16 + 102
     je wmclose
     jmp processed
    drv_show:
     invoke GetDlgItem,[hwnd], 103
     invoke SendMessage,eax, WM_GETTEXT, 3, bufe
     mov dl,[bufe]
     sub dl,18
     mov [strtohide+22],dl
     invoke DefineDosDevice,1,bufe,strtohide
     mov al,[bufe]
     mov [mes_3+5],al
     invoke MessageBox,HWND_DESKTOP,mes_3,"DISK HIDE",MB_OK
     jmp processed
    drv_hide:
     invoke GetDlgItem,[hwnd], 103
     invoke SendMessage,eax, WM_GETTEXT, 3, bufe
     invoke DefineDosDevice,2,bufe,0
     mov al,[bufe]
     mov [mes_2+5],al
     invoke MessageBox,HWND_DESKTOP,mes_2,"DISK SHOW",MB_OK
     jmp processed
    wmclose:
     invoke EndDialog,[hwnd],0
     invoke ExitProcess,0
    processed:
     mov eax,1
    finish:
     pop edi esi ebx
     ret
    endp
    
    strtohide db '\Device\HarddiskVolume',?,0
    ;strtohide db '\Device\Cdrom0',0,?,0 åñëè ïðÿòàòü ñèäèðîìû :)
    mes_2 db 'Disk ',?,': HIDE',0
    mes_3 db 'Disk ',?,': SHOW',0
    bufe db (3)
    
    .end start
    
    section '.rsrc' resource data readable
    directory RT_DIALOG,dialogs
    resource dialogs,1,LANG_RUSSIAN+SUBLANG_DEFAULT,mydialog
     dialog mydialog,'Drivers hide',70,70,67,68,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
      dialogitem 'BUTTON','Show', 100, 3, 19, 61, 15,  BS_PUSHBUTTON+WS_CHILD+WS_VISIBLE+WS_TABSTOP
      dialogitem 'BUTTON','Hide', 101, 3, 34, 61, 15,  BS_PUSHBUTTON+WS_CHILD+WS_VISIBLE+WS_TABSTOP
      dialogitem 'BUTTON','Exit', 102, 3, 49, 61, 15, BS_PUSHBUTTON+WS_CHILD+WS_VISIBLE+WS_TABSTOP
      dialogitem 'EDIT','D:', 103,3, 4, 61, 15, ES_LEFT+ES_UPPERCASE+WS_CHILD+WS_VISIBLE+WS_BORDER+WS_TABSTOP
     enddialog
    
     
    3 people like this.
  2. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    а нельзя сразу и прогу соответствующую выложить?
    или доступно объяснить как это компилировать.
    был бы очень признателен
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Дикс - Компилить - через FASM
    Я както даже не задумывался о том что могут возникнуть такие вопросы.
    Компил в FASM'e не должен вызвать проблем
     
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Совет: Лучше не прописывать жесткие пути, а писать просто include 'win32ax.inc', прописав в конфиге fasm'а дефолтный путь к инклудам ;) Код будет более переносимый
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 _Great_ Спасибо за совет.
    Я поначалу думал так делать. Но из-за того что частенько таскаю копилятор на флешке. поэтому прописываю везде полный путь.
     
    #5 slesh, 23 Jun 2007
    Last edited: 23 Jun 2007