Do czego służy debugger?

  MIKSid to debugger czyli po polsku odpluskwiacz, ale czy tylko insekty powinny się go bać?

Odpluskwianie
Gdzie jest Cobra?

Zająłem się dekodowaniem monitora komputera Cobra1. Komputer po włączeniu wyświetla swoją wizytówkę: "COBRA", jednak w zdeasemblowanym programie nie ma takiego komunikatu. Jak go znaleźć? Oczywiście MIKSidem! 


GC000.C081=			*** WYKONANIE PROGRAMU DO PUŁAPKI ***
----N- A=0D B=FF01 D=FF96 H=C084 S=BF2A P=C081   CDACC4   CALL C4ACh
------ A'FF B'FF0E D'0403 H'C67F X=A374 Y=A020
L					*** LISTING ***
C081 CDACC4     CALL C4ACh
C084 0620       LD B,20h	;BLEDNA DEASEMBLACJA
C086 43         LD B,E
C087 4F         LD C,A
C088 42         LD B,D
C089 52         LD D,D
C08A 41         LD B,C
C08B E1         POP HL
C08C C1         POP BC
C08D 3E3A       LD A,3Ah
C08F CD92C4     CALL C492h
M					*** POWROT DO MONITORA ***
----N- A=0D B=FF01 D=FF96 H=C084 S=BF2A P=C081   CDACC4   CALL C4ACh
C=					*** PRACA KROKOWA ***
----N- A=0D B=FF01 D=FF96 H=C084 S=BF28 P=C4AC   E3       EX (SP),HL
L					*** LISTING ***
C4AC E3         EX (SP),HL
C4AD 46         LD B,(HL)
C4AE 23         INC HL
C4AF 7E         LD A,(HL)
C4B0 CD17C5     CALL C517h
C4B3 10F9       DJNZ F9h
C4B5 23         INC HL
C4B6 E3         EX (SP),HL
C4B7 C9         RET
C4B8 F5         PUSH AF
C4B9 3A1FF8     LD A,(F81Fh)
S					*** WIERZCHOLEK STOSU ***
C084 C0D3 FF01 C076 A020 A374 FF08 FF0E
M					*** POWROT DO MONITORA ***
----N- A=0D B=FF01 D=FF96 H=C084 S=BF28 P=C4AC   E3       EX (SP),HL
G.C4B5=				*** WYKONANIE PROGRAMU DO PUŁAPKI ***
----N- A=41 B=0001 D=FF96 H=C08A S=BF28 P=C4B5   23       INC HL
C=					*** PRACA KROKOWA ***
----N- A=41 B=0001 D=FF96 H=C08B S=BF28 P=C4B6   E3       EX (SP),HL
----N- A=41 B=0001 D=FF96 H=C084 S=BF28 P=C4B7   C9       RET
S					*** WIERZCHOLEK STOSU ***
C08B C0D3 FF01 C076 A020 A374 FF08 FF0E
----N- A=41 B=0001 D=FF96 H=C084 S=BF2A P=C08B   E1       POP HL
L					*** LISTING ***
C08B E1         POP HL
C08C C1         POP BC
C08D 3E3A       LD A,3Ah
C08F CD92C4     CALL C492h
C092 3E0D       LD A,0Dh
C094 CD8FC4     CALL C48Fh
C097 C8         RET Z
C098 BE         CP A,(HL)
C099 23         INC HL
C09A 5E         LD E,(HL)
C09B 23         INC HL


Skopiowałem z terminala wynik pracy krokowej. Okazało się, że rejestry indeksowe oraz alternatywne nie są używane, więc usunąłem zbędne linie, żeby nie zaciemniały obrazu. Oczywiście pułapkę na poszukiwanego gada zastawiłem w miejscu, w którym już wcześniej wystawał ogon. Zgromadzenie kilku następujących po sobie rozkazów LD od razu było podejrzane.


;*******************************************************************
;	WYSWIETLENIE NAPISU "COBRA"
;*******************************************************************
C081 CDACC4     CALL C4ACh	; PRINT_COBRA
C084 06		    .DB 06h
C084 20     	.DB ' '
C086 43         .DB 'C'
C087 4F         .DB 'O'
C088 42         .DB 'B'
C089 52         .DB 'R'
C08A 41         .DB 'A'
C08B E1         POP HL
C08C C1         POP BC
C08D 3E3A       LD A,3Ah
C08F CD92C4     CALL C492h

;*******************************************************************
;	PROCEDURA PRINT_COBRA 
;	UZYTA TYLKO RAZ W PROGRAMIE MONITORA
; 	BEZPOSREDNIO ZA WYWOLANIEM NALEZY UMIESCIC PARAMETRY:
;	LICZBA BAJTOW DO WYSWIETLENIA (TUTAJ 6)
;	KOLEJNE ZNAKI ASCII NP. " COBRA" (ZACZYNA SIE OD SPACJI)
;	PROCEDURA WYKORZYSTUJE STOS I MODYFIKUJE ADRES POWROTU
;*******************************************************************
			PRINT_COBRA:
C4AC E3         EX (SP),HL	; ADRES DANYCH
C4AD 46         LD B,(HL)	; LICZBA BAJTOW
			NEXT_CHAR:
C4AE 23         INC HL
C4AF 7E         LD A,(HL)
C4B0 CD17C5     CALL C517h	; PRINT_CHAR
C4B3 10F9       DJNZ F9h	; NEXT_CHAR
C4B5 23         INC HL		; ADRES POWROTU
C4B6 E3         EX (SP),HL	; NA STOS
C4B7 C9         RET			; END_OF_PRINT_COBRA


Widać moc MIKSida?

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.