home *** CD-ROM | disk | FTP | other *** search
/ telefisk.org / amiga_virus_collection_research.7z / VIRUSRESEARCH / STD_CRABS / DECODESTD.E < prev    next >
Text File  |  1999-06-12  |  2KB  |  130 lines

  1. MODULE    'dos/doshunks'
  2. MODULE    'tools/file'
  3.  
  4.  
  5. DEF    hunks=NIL,
  6.     cdh=NIL,
  7.     lst=NIL,
  8.     code=NIL,
  9.     firstcode=NIL,
  10.     newfile[256]:STRING,
  11.     buffer=NIL,
  12.     size=NIL
  13.  
  14. PROC main()
  15.      DEF     lock=NIL
  16.  
  17.     size:=FileLength(arg)
  18.     StringF(newfile,'\s.dec',arg)
  19.     lock:=Open(arg,OLDFILE)
  20.     buffer:=New(size)
  21.     Read(lock,buffer,size)
  22.     Close(lock)
  23.  
  24.     MOVE.L    size,D0
  25.     MOVEA.L    buffer,A0
  26.     MOVEQ    #0,D2
  27.     MOVEQ    #0,D3
  28.  
  29.     MOVEA.L    A0,A2
  30.     ADDA.L    D0,A2
  31.  
  32.     CMPI.L    #$3F3,(A0)+
  33.     BEQ    namelp
  34.  
  35.     WriteF('Not an executable\n')
  36.     CleanUp()
  37.  
  38. exit:    MOVE.L    D1,lst
  39.     MOVE.L    D2,hunks
  40.     MOVE.L    D3,cdh
  41.     MOVE.L    D0,code
  42.     eind()
  43. namelp:
  44.     CMPA.L    A0,A2
  45.     BCS    exit
  46.     MOVE.L    (A0)+,D0
  47.     BEQ    endnam
  48.     LSL.L    #2,D0
  49.     ADDA.L    D0,A0
  50.     BRA    namelp
  51. endnam:    MOVE.L    (A0)+,D0
  52.     LSL.L    #2,D0
  53.     ADDQ.L    #8,D0
  54.     ADDA.L    D0,A0
  55.     MOVEQ    #0,D0
  56.  
  57. dohunk:
  58.     CMPA.L    A0,A2
  59.     BCS.B    exit
  60.  
  61.     MOVE.L    (A0),D0
  62.  
  63.     AND.L    #$00FFFFFF,D0
  64.     CMP.L    #$3E9,D0
  65.     BNE    doother
  66.  
  67.     ADDQ.L    #8,A0
  68.     MOVE.L    A0,firstcode
  69.  
  70.     decode()
  71.  
  72.     eind()
  73.  
  74. doother:
  75.     MOVE.W    (A0)+,D0
  76.     CMPA.L    A0,A2
  77.     BCS    exit
  78.     CMP.W    #$3F2,D0
  79.     BNE    doother
  80.  
  81. doend:
  82.     ->ADDA.L    #4,A0
  83.     ADD.L    #1,D2
  84.     ->MOVE.L    (A0)+,D0
  85.     BRA    dohunk
  86.  
  87. ENDPROC
  88.  
  89. PROC eind()
  90.     WriteF('hunks: \d codehunks: \d last size: \d last code: $\h\n',hunks,cdh,lst,code)
  91.     ->WriteF('\s\n',text)
  92.     writefile(newfile,buffer,size)
  93.     CleanUp()
  94. ENDPROC
  95.  
  96. PROC decode()
  97.     DEF    t=NIL,
  98.         i=NIL
  99.  
  100.     MOVEA.L    firstcode,A0
  101.     MOVE.L    -4(A0),D0
  102.     LSL.L    #2,D0
  103.     ADDA.L    D0,A0
  104.  
  105.     LEA    -768(A0),A0
  106.     MOVE.L    (A0),t
  107.  
  108.     ->WriteF('\h\n',t)
  109.  
  110.     MOVE.W    -14(A0),D0
  111.     LEA    -14(A0,D0.W),A1
  112.     MOVE.L    (A1),i
  113.  
  114.     WriteF('\h \h\n',t,i)
  115.  
  116. /*
  117.     LEA    -740(A0),A1    ->49
  118.     LEA    -74(A0),A2    ->54
  119.  
  120.     MOVE.W    (A2),D0
  121.     MOVE.L    #$00004e75,D1
  122.  
  123. lp:    EOR.W    D0,(A1)+
  124.     ADD.L    D1,D0
  125.     CMPA.L    A1,A2
  126.     BNE.B    lp
  127. */
  128.  
  129. ENDPROC
  130.