[ Главная | Ресурсы | FAQ ] Уроки: [ Введение | DatePlan | SwissClock | HandMap | MobileDB | Noter | ThinkDB | HandMap33 | Lingua Franca | AlarmMaster | Race Fever | TinySheet | Strategic Commander | FlipChart ]
MobileDB - это наиболее популярная база данных для Palm. Популярность её объясняется большими возможностями (уступающими таким серьёзным продуктам, как ThinkDB, но достаточными для базы данных для Пальма, небольшим размером (50K против 170K у ThinkDB. Даже самые примитивные базы данных занимают не менее 25K) и большим количеством баз данных с полезной информацией (в основном, для американцев).
Начал взлом я так же как обычно, с поиска нужных ресурсов. Немного неожиданным оказалось то, что для вывода раздражающих и не очень сообщений о неправильной и правильной регистрации MobileDB не использует формы и модальные диалоги... Безобразие. Как оказалось, все эти слова содержатся только в code0001.bin, то есть в самой программе... Однако, посмотрев в листинге программы, я нашел следующий фрагмент (возможно, вам придется скроллить вправо, чтобы увидеть всё):
00003188 596f75206861766520656e746572656420616e20696e76616c6964204d6f L415 DC.B 'You have entered an invalid Mo' 000031a6 62696c65444220726567697374726174696f6e20636f64652e DC.B 'bileDB registration code.' 000031bf 00 DC.B #0
Это было оно. Но вот что удивительно, нигде не было даже намека на сообщение об удачной регистрации. Всё, что удалось найти, было "This version is already registered" двумя строками ниже. :) Мне пришла в голову мысль, что если программа не может сослаться на нужный текст по имени ресурса, то, может быть, метка L415 подойдет. Поиск по "L415" дал один результат.
00002f04 7600 MOVEQ #0,D3 00002f06 603e BRA L402 00002f08 45fa020e LEA L413,A2 00002f0c 7600 MOVEQ #0,D3 00002f0e 6036 BRA L402 00002f10 45fa0240 LEA L414,A2 00002f14 7600 MOVEQ #0,D3 00002f16 602e BRA L402 00002f18 45fa026e LEA L415,A2 00002f1c 7600 MOVEQ #0,D3 00002f1e 6026 BRA L402 00002f20 45fa029e LEA L416,A2 00002f24 7600 MOVEQ #0,D3 00002f26 601e BRA L402 00002f28 45fa02ba LEA L417,A2 00002f2c 7600 MOVEQ #0,D3 00002f2e 6016 BRA L402 00002f30 45fa02f6 LEA L418,A2 00002f34 7600 MOVEQ #0,D3 00002f36 600e BRA L402 00002f38 45fa0308 LEA L419,A2
Посмотрев ещё на имеющиеся диалоги, я нашёл, что в About (рис. 1) отмечается, что программа unregistered. Моё чутьё подсказало мне, что если её зарегистрировать, то на этом месте появится другая надпись. Обе эти строки удалось найти только в листинге.
00003314 72656769737465726564 L424 DC.B 'registered' 0000331e 0000 DC.W #0 00003320 756e72656769737465726564 L425 DC.B 'unregistered'
Я предположил, что ссылаться на эти строки можно по меткам L424 и L425 (а как ещё?). Ссылки на них удалось найти легко:
000032a6 2648 MOVEA.L A0,A3 000032a8 4a2def6d TST.B -4243(A5) 000032ac 6706 BEQ L422 000032ae 41fa0064 LEA L424,A0 000032b2 6004 BRA L423 000032b4 41fa006a L422 LEA L425,A0
Чудесно! Но ведь выбор одной из этих строк, а значит, и регистрированность программы зависит только от результата теста TST.B -4243(A5). Так я понял, что результат регистрации хранится в -4243(a5) и тщательно изучил все места в программе, где была ссылка на этот адрес.
В одном из кусков кода, который приведён ниже, я нашел запись по этому адресу. Это натолкнуло меня на мысль убрать условный переход BNE, закрыв его заглушкой 4e71.
00001cb2 4a40 TST.W D0 00001cb4 504f ADDQ.W #8,A7 00001cb6 6608 BNE L243 00001cb8 1b7c0001ef6d MOVE.B #1,-4243(A5)
Ура! Сработало. Это заставило программу саморегистрироваться при запуске. Единственная мелкая проблемка была в том, что нужно первый раз выйти из MobileDB и перезапустить её.
Урок 3 - HandMap | Урок 5 - Noter |
Copyright © PalmPot.
Последнее обновление 15.07.2000.