Do czego służy debugger?
MIKSid to debugger czyli po polsku odpluskwiacz, ale czy tylko insekty powinny się go bać?
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
Prześlij komentarz