Kopiowanie Roba Northena

Rob Northen Copylock (znany również po prostu jako Copylock ) to system ochrony przed kopiowaniem zaprojektowany w celu zapobiegania duplikowaniu dysków ze standardowymi stacjami dyskietek na platformach Amiga , Atari ST i MS-DOS . Został stworzony przez brytyjskiego programistę Roba Northena po założeniu własnej firmy Copylock Software. Był używany głównie w celu uniemożliwienia kopiowania gier przez zwykłych użytkowników.

Historia

W 1984 roku Rob Northen został zatrudniony przez Acornsoft do napisania procedur ochrony przed kopiowaniem dla ich opublikowanego oprogramowania, takiego jak oryginalna Elite dla BBC Micro . Northen opuścił firmę sześć miesięcy później i założył własną firmę Copylock Software, nadal pracując w niepełnym wymiarze godzin dla Acornsoft, aby pisać procedury ochrony przed kopiowaniem, systemy plików i narzędzia dyskowe.

Pierwsze oprogramowanie Northen chronione przed kopiowaniem pod nazwą Copylock pojawiło się w 1987 roku na Atari ST . Pierwsza wersja oprogramowania Copylock była używana do ochrony tych wczesnych Commodore Amiga i Atari ST, które nie miały wielokrotnego ładowania , dlatego musiały znajdować się na jednej dyskietce . Początkowo wydawcy wysyłali niezabezpieczony dysk główny do Northen, który następnie zastępował program ładujący własnym zaszyfrowanym programem ładującym i wysyłał chroniony dysk główny w celu zduplikowania.

Zgodnie z prośbami twórców gier, takich jak The Bitmap Brothers , którzy chcieli wdrożyć bardziej złożone kontrole ochrony, Northen napisał podprogramy które programiści mogliby zaimplementować według własnych upodobań. W 1990 roku kupił powielacz dysków i użył go do stworzenia dyskietek z osadzonymi w nich numerami seryjnymi Copylock, które następnie wysyłał programistom zamiast chronionych dysków głównych, wraz z procedurami Copylock, które mieli uwzględnić w swoich grach. Ta seria Copylock może pomieścić nowsze gry z wielokrotnym ładowaniem lub obejmującymi wiele dyskietek. Pozwoliło to również na uwzględnienie kontroli ochrony w dowolnych punktach kodu gry: jednym z przykładów była gra komputerowa Hook firmy Ocean Software , która obejmowała kontrolę ochrony w grze, której niepowodzenie spowodowałoby zniknięcie kluczowego przedmiotu, a mianowicie kubka, z gry.

W 1990 roku Copylock został również przeniesiony na systemy MS-DOS . Pod koniec jego działania w 1996 roku około 500 komercyjnych gier na Amigę było podobno chronionych przez Copylock.

Szczegóły techniczne

Dyskietka chroniona przed kopiowaniem zawiera jedną długą ścieżkę, znaną jako ścieżka szeregowa Copylock, którą można odczytać na standardowej stacji dyskietek, ale nie można jej zapisać bez zaawansowanej maszyny do powielania dysków. Dysk zawiera specjalny program ładujący, który jest silnie zaszyfrowany i może odczytywać i dekodować ścieżkę szeregową Copylock. Zaszyfrowany kod weryfikuje, czy dysk ma prawidłowy klucz seryjny Copylock, który jest generowany w unikalny sposób dla każdej gry.

Na poziomie języka maszynowego Copylock wykorzystuje tryb śledzenia Motorola 68000 , który powoduje, że procesor wykonuje określony wektor śledzenia przed każdą instrukcją w programie głównym. Wektor śledzenia dekoduje kod języka maszynowego dokładnie na czas przed jego wykonaniem i ponownie szyfruje go po wykonaniu, dzięki czemu nie więcej niż jedna lub dwie instrukcje są przechowywane w pamięci fizycznej w postaci niezaszyfrowanej w dowolnym momencie. Nazywa się to dekoderem wektora śledzenia i został pierwotnie zaimplementowany na platformie Atari ST, a następnie skopiowany na wczesną Amigę modeli, oba oparte na architekturze 68000.

Pierwsza seria

Były dwa rodzaje procedury Copylock z wcześniejszej serii.

W typie wewnętrznym klucz szeregowy Copylock dla tego konkretnego oprogramowania jest przekazywany w rejestrze sprzętowym D0 i przechowywany pod adresem pamięci $24. Pomysłowi programiści mogliby użyć tego klucza seryjnego do określonych celów, aby zmusić niedoszłego crackera do usunięcia dodatkowych kontroli w grze. Jednak w przypadku wielu wczesnych tytułów programiści zazwyczaj po prostu sprawdzali klucz seryjny, który można było łatwo znaleźć w programie, a tym samym wyłączyć.

W typie opakowania kod uruchamiający grę lub procedurę rozruchową jest szyfrowany, a następnie dołączany do kodu Copylock. Wszystkie sprawdzanie poprawności dysku jest wykonywane przez kod Copylock: jeśli się powiedzie, dekodowanie wektora śledzenia obejmuje zaszyfrowaną procedurę rozruchową lub plik; dane są następnie przenoszone do lokalizacji oczekiwanej przez kod gry i procedura jest wykonywana. Ten typ Copylock Series 1 był często używany w grach, które ładowały się jednym uderzeniem i nie wymagały ponownego dostępu do dysku. Oznaczało to jednak, że ochrona przed kopiowaniem stała się bezużyteczna po odszyfrowaniu gry, ponieważ wtedy gra mogła być „single-file”, tj. całkowicie zrzucona z pamięci, zapisana na dysku, a następnie zmuszona do działania niezależnie od procedur Copylock.

Druga seria

Seria 2 była ewolucją wewnętrznych procedur serii 1, co ponownie sprawiło, że wczesne wersje były łatwe do obejścia, ponieważ wielu programistów zaimplementowało tylko proste sprawdzenie ochrony, które odczytało klucz seryjny ze ścieżki szeregowej Copylock i sprawdziło, czy jest poprawny. Włamywacze często nie musieli nawet sprawdzać zakodowanych procedur Copylock, ponieważ sprawdzanie autentyczności dysku było realizowane w taki sposób, że mogli wyraźnie zobaczyć, jaki jest klucz seryjny z kodu, który go sprawdzał. Dlatego też, podczas gdy wiele osób rozumiało, jak działa Copylock, bardzo niewielu poświęciło czas, aby dowiedzieć się, jak go faktycznie rozszyfrować. Jednak do tej pory Copylock ewoluował, aby umożliwić przekazywanie parametrów przed wykonaniem, co oznaczało, że Copylock mógł teraz zapisywać nie tylko klucz seryjny, ale także określone wartości związane z grą w zawartości rejestrów przekazywanych do Copylock lub po prostu wpisz wartości do listy predefiniowanych adresów, co sprawi, że gra będzie działać poprawnie.

Typowym, generalnie niepoprawnym sposobem złamania gry Copylocked było uzyskanie klucza seryjnego, zmodyfikowanie nagłówka Copylock w celu umieszczenia prawidłowego klucza seryjnego w rejestrze D0, a następnie pominięcie całego procesu odczytu i dekodowania. Oznaczałoby to, że kod „specjalnego przypadku” w Copylock nigdy nie zostałby wykonany, co oznaczałoby, że gra nie działałaby przy użyciu samego klucza seryjnego.

Wersja na PC

Możliwe było przeniesienie Copylock na PC, ponieważ mikroprocesor x86 obsługuje wektor śledzenia tak samo jak procesor 68000, poprzez jednoetapowe przerwanie lub INT 1. Objawiało się to w nieco inny sposób w tym, że kod wykonywalny gry został zaszyfrowany i „zapakowany” przez Loader Copylock. W czasie wykonywania ten program ładujący odczytywałby 4 sektory z dyskietki i generował z nich sumy kontrolne. Te z kolei posłużyłyby jako klucze do odszyfrowania kodu gry. Po zakończeniu odszyfrowywania program ładujący przekazywał kontrolę do programu gry. Wersję na PC można było łatwo obejść, ponieważ oryginalny kod wykonywalny gry był po prostu przechowywany w programie ładującym. Po przejściu kontroli dysku i kodu szyfrującego zrzucenie niezaszyfrowanego pliku wykonywalnego było tylko kwestią wykonania 2 zapisów na dysku. Pierwszy zrzuciłby niezmodyfikowany nagłówek „MZ”, a drugi zapis zakończyłby zadanie, zapisując aktualny kod gry. Fantastyczny urlop z The Humble Guys napisali narzędzie, które właśnie to zrobiło i mogło „złamać” grę w mniej niż minutę.

Linki zewnętrzne