Autor Wątek: Program do debugowania post-moretem aplikacji bez źródełek i PDB  (Przeczytany 703 razy)

Offline Shelim

  • Użytkownik
    • Homepage

# Luty 12, 2011, 23:56:09
Mam dość nietypowy problem, mianowicie piszę sobie w przerwie między egzaminami amatorski dodatek do jednej staruteńkiej gry komputerowej którą bardzo lubię. Pracę sobie rozłożyłem na dwa główne działy: pierwszym jest napisanie haków na archaiczną wersję DXa (gra jest w 3D), przetłumaczenie wywołań interfejsów na DX 9.0c i wstrzyknięcie fajnych efektów jak np. shadery, post-processing, stereoskopowy render (dla nie-posiadaczy GeForceów :D ), itp. Ta część generalnie idzie bardzo fajnie i nie mam z nią większych kłopotów i praktycznie w tej chwili mam już w pełni pohaczoną dllkę DXa :) .

Drugą częścią pracy jest poprawienie bugów z oryginalnej gry. Drakan: The Order of Flame, bo o nim tu mowa, został wydany z dość dużym rushem przed deadlinem i to co trafiło do sklepów to była wersja która kwalifikowała się bardziej do beta testów. W każdym razie dzięki IDA połapałem dużo zwisów na moim kompie i połatałem troszkę w assembly (mnóstwo fajnych rzeczy jak dereferencje pustych wskaźników jeżeli jakaś metoda zawiedzie, itp). Doszedłem do punktu w którym Drakan raczej nie wiesza się już na moim kompie.

Problem jest w tym, że wiesza się na cudzym. Ponieważ nie mam ani źródełek ani symboli debugowych nie specjalnie mogę dać komuś wersji debugowej. Próbowałem się oczywiście wielokrotnie skontaktować z producentem i poprosić o ich udostępnienie - była nawet szansa że się uda, nawiązałem jakąś wymianę mailową, acz w między czasie producent - Surreal - zostało całkowicie rozwiązane i jako firma przestała istnieć. Jako że wydawca nie istnieje już od dość dawna (zarówno Europejski jak i Amerykański), zostałem jak to się mówi "na lodzie" pod względem prawnym. Prawnik z którym się skonsultowałem mówi jednak że poprawienie zawieszającej się gry za pomocą wstecznej inżynierii nie jest nielegalne w Unii Europejskiej, a jeżeli mam dodatkowo potwierdzenie że próbowałem się kontaktować z producentem, to ewentualna sprawa którą ktoś chciałby mi wytoczyć jest praktycznie z góry wygrana.

Wracając, problem mam w tym, że chciałbym jakoś zdebugować zdalnie aplikację na cudzym kompie. Ponieważ z przyczyn technicznych trudny może być zdalny debugging (komputer o którym mowa nie jest nawet podłączony do sieci), myślałem o jakimś debuggu post mortem. I tutaj pojawia się pytanie - czy istnieją jakiekolwiek narzędzia działające troszeczkę na zasadzie just-in-time debugger, które po wywałce aplikacji robią zrzut pamięci programu, zrzut rejestrów, stosu, ze szczególnym uwzględnieniem sposobu na łatwe namierzenie miejsca w pliki .exe (zdaję sobie sprawę że uzyskanie offsetu jest niemożliwe, ale może chociaż +/- 128 kb pamięci w okolicach wskazywanych przez rejestr EIP)?

Jeżeli moje podejście jest złe - czy istnieje lepsze rozwiązanie dla tego problemu? :)

Z góry dzięki za wszelką pomoc :)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych


Offline Shelim

  • Użytkownik
    • Homepage

# Luty 13, 2011, 00:27:37
Dzięki, dokładnie czegoś takiego szukałem :)