D-Bug & Automation Forum
D-Bug & Automation Forum >> Coding >> Introduction to ST Hacking By Hank/Automation PT 1
http://d-bug.mooo.com/dbugforums/cgi-bin/yabb2/YaBB.pl?num=1172673889

Message started by Shw on 28.02.07 at 14:44:48

Title: Introduction to ST Hacking By Hank/Automation PT 3
Post by Shw on 28.02.07 at 14:47:56

;Protoscan II Protection

LOOP      BSR.S      PROT
     TST.B      D0            ;Original
     BNE.S      LOOP            ;No try again
     CLR.W      -(SP)            ;Function warmstart
     TRAP      #1            ;and return to desktop


PROT      LEA      $63000,A0      ;Buffer
     MOVE.L      A0,$7079E
     MOVEQ      #1,D3
L7054C      MOVE.L      D3,$707A2
     BSR      L70776
     BSR.S      L70582
     BSR.S      L705B8
     BSR.S      L705CE
     BSR      L7060E
     BSR      L7060E
     BSR.S      L705B8
     BSR      L706CA
     BSR      L7073A
     MOVE.B      $707A6,D0
     TST.B      D0
     BEQ.S      L70580
     MOVE.L      $707A2,D3
     DBF      D3,L7054C
L7057E      BRA.S      L7057E
L70580      RTS
L70582      MOVE.W      #0,D0
     ADDQ.B      #1,D0
     LSL.B      #1,D0
     ORI.W      #0,D0
     EORI.B      #7,D0
     ANDI.B      #7,D0
L70596      MOVE.B      #7,$FFFF8800.W
     MOVE.B      #$FF,$FFFF8802.W
     MOVE.B      #$E,$FFFF8800.W
     MOVE.B      $FFFF8800.W,D1
     ANDI.B      #$F8,D1
     OR.B      D0,D1
     MOVE.B      D1,$FFFF8802.W
     RTS
L705B8      MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$D0,D6
     BSR      L706E0
     MOVEQ      #$28,D7
     BSR      L706DA
     RTS
L705CE      BSR      L706FE
     MOVE.W      #$86,$FFFF8606.W
     MOVE.W      #$4F,D6
     BSR      L706E0
     MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$1B,D6
     BSR      L706E0
     MOVE.L      #$60000,D7
L705F4      SUBQ.L      #1,D7
     BEQ.S      L70602
     BTST      #5,$FFFFFA01.W
     BNE.S      L705F4
     RTS
L70602      BRA.S      L705CE
     MOVE.W      #$FFF9,$707A6
     RTS
L7060E      CLR.L      $70796
     MOVE      SR,L7078C
     MOVE.W      #$90,$FFFF8606.W
     MOVE.W      #$190,$FFFF8606.W
     MOVE.W      #$90,$FFFF8606.W
     MOVEQ      #$16,D6
     MOVE.W      #$200,D2
     MULU      D6,D2
     MOVE.W      D2,L7078E
     MOVE.L      $7079E,D3
     ADD.L      D3,D2
     MOVE.L      D2,L70792
     BSR      L706E0
     MOVE.L      $7079E,D0
     MOVE.B      D0,$FFFF860D.W
     LSR.L      #8,D0
     MOVE.B      D0,$FFFF860B.W
     LSR.L      #8,D0
     MOVE.B      D0,$FFFF8609.W
     MOVE.W      #$80,$FFFF8606.W
     MOVE.W      #$E8,D6
     BSR.S      L706E0
     MOVE.L      #$50000,D7
     MOVEA.L      L70792(PC),A5
     MOVE.W      #$200,D0
L70678      DBF      D0,L70678
L7067C      BTST      #5,$FFFFFA01.W
     BEQ.S      L706A6
     SUBQ.L      #1,D7
     BEQ.S      L706C4
     MOVE.B      $FFFF8609.W,L70797
     MOVE.B      $FFFF860B.W,L70798
     MOVE.B      $FFFF860D.W,L70799
     CMPA.L      L70796,A5
     BGT.S      L7067C
L706A6      MOVE.W      #$90,$FFFF8606.W
     MOVE.W      $FFFF8606.W,D5
     MOVE.W      D5,L70790
     BTST      #0,D5
     BEQ.S      L706C4
     MOVE.W      #$80,$FFFF8606.W
     BSR.S      L7072C
L706C4      MOVE.W      L7078C(PC),SR
     RTS
L706CA      MOVE.W      #$80,$FFFF8606.W
     MOVE.B      #7,D0
     BSR      L70596
     RTS
L706DA      DBF      D7,L706DA
     RTS
L706E0      BSR.S      L706EE
     MOVE.W      D6,$FFFF8604.W
     BSR.S      L706EE
     RTS
     MOVE.W      $FFFF8604.W,D3
L706EE      MOVE      SR,-(A7)
     MOVE.W      D7,-(A7)
     MOVEQ      #$28,D7
L706F4      DBF      D7,L706F4
     MOVE.W      (A7)+,D7
     MOVE.W      (A7)+,SR
     RTS
L706FE      MOVE.W      L7079A,D6
     ANDI.W      #3,D6
     MOVE.L      #$50000,D7
     MOVE.W      #$80,$FFFF8606.W
     BSR.S      L706E0
L70714      SUBQ.L      #1,D7
     BEQ.S      L70722
     BTST      #5,$FFFFFA01.W
     BNE.S      L70714
     RTS
L70722      MOVE.B      #$F9,$707A6
     RTS
L7072C      BSR.S      L706EE
     MOVE.W      $FFFF8604.W,$7079C
     BSR.S      L706EE
     RTS
L7073A      MOVE.L      $7079E,D1
     ADDI.L      #$2EE0,D1
     MOVEA.L      D1,A0
     MOVE.L      #$DAC,D3
     MOVEQ      #0,D2
     MOVE.W      -(A0),D5
L70750      MOVE.W      -(A0),D0
     CMP.W      D0,D5
     BNE.S      L7075E
     ADDQ.L      #2,D2
     DBF      D3,L70750
     BRA.S      L7076E
L7075E      SUBI.L      #$170C,D2
     BMI.S      L7076E
     CLR.B      $707A6
     RTS
L7076E      ST      $707A6
     RTS
L70776      MOVE.L      #$176F,D2
     MOVEA.L      $7079E,A0
     MOVE.L      $4BA.W,D3
L70784      MOVE.W      D3,(A0)+
     DBF      D2,L70784
     RTS
L7078C      DC.L      0
L7078E      DC.L      0
L70790      DC.L      0
L70792      DC.L      0
L70796      DC.L      0
L70797      DC.L      0
L70798      ORI.B      #3,D0
L70799      DC.L      0
L7079A      DC.L      0



;To remove a Protoscan protection all you have to do is type MOVEQ #0,D0
;RTS ($70004E75) you need the moveq so that D0 is equil (0) when it returns
;from the protection as most of them do a TST.B D0 see above example.


;Here is a brief list of games you will find this protection in:

;The Untouchables
;Postman Pat
;Ninja Warriors
;Continental Curcus
;Where Time Stood Still

D-Bug & Automation Forum » Powered by YaBB 2.6.0!
YaBB Forum Software © 2000-2024. All Rights Reserved.