Cześć.
Ostatnio mam fazę żeby w wolnym czasie bawić się w udoskonalanie roboty po "złych hackerach" ;) I w oldskoolowych produkcjach, ktorych i tak już legalnei nie ma szans kupić. Poprowawiam niektóre interesujące mnie tytuły by tak zwane dox checki się najlepiej w ogóle nie ukazywały lub gry są czasami nie dokońća ok popatchowane, bo w dawnych czasach zjadaczą crackersów nie chciało się przysiąść no i może debuggery nie były zawsze tak dla nich wygodne.
Do rzeczy. Zwracam się tutaj z prośbą i pytaniem. Na tapecie mam teraz grę którą widzę na sieci wiele osób, również z poza Polski darzy sympatią, nagrywając z niej letsplaye i dyskutując na forach. Ta gra to "Summer Challenge" od Accolade z 1992 roku. Połamałem już dox checka swoim TSR'em na 16h, bo nie umiem robić takich myków że inicjujemy TSR na 21h i się nie zamraża on na samym sobie. Jednak i tak zrobiłem lepiej niż cracker/grupa Onyx i chyba zgapiający od nich pokręcone rozwiązanie z masą zmian w pamięci Zagrzebskie modziciele, bo dox check w ogóle się nie pokazuje (i wystarcza zmiana jednego bajtu najlepiej w pamięci nawet dla gry w rozpakowanej postaci).
Pozostał jeszcze problem poprawienia buga gry. Unpackowałem ją z pomocą unp.exe dla jak dla mnie łatwiejszego podglądania również pod HIEW i spatchowałem by unpackowana się uruchamiała. Jednak nie mogę pozbyć się błedu proszącego o wyłączenie debuggera, nawet jeżeli odpala się bez debuggera. Błąd ten pojawia się przy próbie rozpoczęcia olimpiady lub treningu. Ma on miejsce jeżeli liczba cycles DosBOX'a jest większa niż chyba 2000. Pomaga tylko na chwilę wejście do ekranu setupu w menu głownym i wyjścia z niego. Wtedy błedu nie ma. Jakby się może karta dźwiękowa musiała przeinicjować czy coś :/ Chciałbym jednak aby gra działała perfekcyjnie. Namierzyłem miejsca w kodzie gdzie wywala do DOS'a z errorem.
Jednak śledząc kod pod debuggerem DosBOXa lamerską metodą porównując kod bez wchodzenia do setupu i w oknie obok z wejściem do setupu, gdzie błąd nie wystąpi. Wszystkie instrukcje są tak samo, tylko wersja która się wywali zatrzymuje się po jednym callu na przerwaniu 3F. Podgląd rejestrów pokazuje to samo, po drodze skoki przechodzą tak samo. Może ktoś znalazł by czas i pomógł mi rozgyźć problem? Pisałem już do gościa co zrobił tutorial jak rozpakowaywać ezeki starym debuggerem DosBOX'a, ale nie odpisał.
Jeżeli ktoś by się zdecydował znaleźć chwilę czasu na zabawę to prosze dać znać, podeśle linki do wrzuconej kompilacji z narzędziami ułątwiającej analize pod DosBOXowym debuggerem. A także skromne notatki z pliku tekstowego z opisem co do tej pory ustaliłem. Chociaż niewiele tego jest. Z góry dziękuję i przepraszam za rozpisanie się, ale to dział nietuzinkowy więc nie może być samego lakonicznego pytania jak w innym dziale ;)
Edit: jednak chyba spatchowałem złe miejsce i pomimo iż dox chceck jest pominięty, to koder zastawił pułapkę. I wprawdzie sterowanie enterem działa ok. Ale konkurencja na przykład treningowa w rzucie oszczepem, działa tak że rzucając oszczep spacją lub backspace nie jest odnotowywane puszczenie klawisza i rzucamy wtedy niemal po torze pod kątem prostym, co skutkuje beznadziejnym wynikiem. Spróbuję się temu jeszcze na spokojnie przyjrzeć. Nadal jednak pozostaje problem errora z debuggerem, także liczę że ktoś pomoże.