@Seban Wróciłem do programów AutoCopy, w Twojej paczce są AutoCopy 3.1 i AutoCopy nazwane 4.0. Wersja 3.1 wygląda na oficjalną kolejną wersję AutoCopy 3.0 (zabezpieczająca). Obydwa loadery ma nieco inne niż w wersji 3.0/2.0. Natomiast wersja z pliku 4.0 to 1:1 wersja 3.0 z podmienionym wyłącznie loaderem 2. Loader nie przypomina żadnego z którym się spotkałem dotychczas, niezmieniona numeracja i data oraz zmiana loadera na nietypowy wskazują na to, ze ta wersja jest nieoficjalna. Wygenerowany sygnał jest zabezpieczony, a nowy loader zawiesza emulator... Pytanie tylko co to za loader - dlaczego ktoś go umieścił w zabezpieczającej wersji AutoCopy? Czyżby chciał utrudnić identyfikację (plik loadera jest w całości wypełniony) tak zabezpieczonych plików i coś mu nie wyszło? Powinna też istnieć wersja 2.1 (bez zabezpieczania).
"RK1987" jest też przy Super Cobrze. Znalazłem też w xex World Karate: "(C) ROBERT K. 1987".
Edit: W załączniku asm-y i binarka Loaderów z AutoCopy. Plik binarny L2 z AC "4.0" - ten podmieniony, który wgląda podejrzanie i się zawiesza. Pliki asm - Loadery L1 i L2 z AC 3.1 (zabezpieczające), Loadery L1 i L2 z wersji AC 2.0(/3.0). W tych dwóch ostatnich plikach dodałem po dwa nop-y, aby adresy się zgodziły przy porównywaniu, dodałem też opis dwóch bajtów które ustawiają loader na odczyt spreparowanych krótszych bloków w wersji 3.0.
Nie umiem rozszyfrować jak to działa, ale myślę, że wersja 3.1 działa tak samo jak 3.0, ale jest to rozwiązane w zagmatwany sposób dla utrudnienia. Także możliwe, że wersja 2.1 nie istnieje.
Edit2: Sprawdziłem to zabezpieczenie polega na czymś innym - nie da się go odczytać zmodyfikowaną przeze mnie wersją Long Turbo Copy 1.1 (odczytujemy od drugiego bloku), trzeba by było zrobić kolejną wersję - wprowadzając zmiany analogiczne z loaderami z wersji 3.1 (mam nadzieję, że obydwa używają tego samego sposobu).
Edit3: Wychodzi na to, że zmiana jest w miejscu gdzie wstawiłem nop-y i zwiększone są niektóre adresy o 2, czyli jakby o te dwa dodatkowe Bajty... z tym mogę mieć problem, ale spróbuję...
W załączniku Super Cobra nagrana w dwóch kopiach - jedna za drugą - z L1 i L2 z AutoCopy 3.1.
Edit4: no i mam problem jak relokować kod o dwa Bajty... :rolleyes: Wymyśliłem, że mogę zobaczyć w debugerze gdzie oryginalny program skacze i tak modyfikować przerabiany, ale czy nie ma prostszej metody?
Znalazłem, że jest JBW Relocator i chyba go kiedyś używałem, ale na razie muszę odpocząć...
Edit5: Ponieważ po przesunięciu kodu program się ciągle zawieszał, to rozwiązałem problem inaczej - wyciąłem fragment i umieściłem pod $0400, na początek sprawdziłem czy działa bez przeróbki i było OK, zmiana jak w v3.1 spowodowała jednak, że program nie znajdował nagłówka.
To zabezpieczenie prawdopodobnie polega na modyfikacji obliczania sumy kontrolnej. Loaderowi nie jest potrzebne żeby znaleźć nagłówek, bo już czyta z otwartego pliku, natomiast kopier nagłówka dopiero szuka, a że nagłówek ma tradycyjnie liczoną sumę kontrolną - jak myślę - to po zmianie sposobu liczenia jest uznawany za błędny i pomijany. Dlatego wprowadziłem przełącznik, który za pierwszym razem pozwala odczytać nazwę, a później już czyta sposobem z v3.1. No i udało mi się odczytać zabezpieczony plik :) Nie wiem jeszcze tylko gdzie program przechowuje znacznik który pozwalałby przełączyć kopier z powrotem na odczytywanie nagłówka... spróbuję go znaleźć...
Edit6:Znalazłem: $83
= #$00 po uruchomieniu i gdy szuka/zapisuje nagłówek
= #$80 gdy zapis danych i gdy już zapisze;
= #$01 gdy wczytuje dane i gdy już wczyta.
ICAX1Z = #$04, podczas odczytu (nagłówka i danych).
Także aby odczytać plik z AutoCopy v3.1, trzeba użyć v3.1 tylko gdy $83=#$01.