Урок 4 - Взлом программы MobileDB

  1. MobileDB
  2. Взлом
  3. Хранение информации о регистрации

MobileDB

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

MobileDB - About
Рис. 1
Нечто довольно мрачное и вначале я не смог догадаться, что же такое происходило после L402. Потом я сообразил, что же происходило за меткой L402. Да, в MobileDB не было отдельных ресурсов с сообщениями об удачной и неудачной регистрации. Но были два универсальных ресурса Talt0578.bin и Talt06a4.bin, которые могли использоваться с любым текстом и именно они и использовались там.

Посмотрев ещё на имеющиеся диалоги, я нашёл, что в 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
TopList

Copyright © PalmPot.
Последнее обновление 15.07.2000.