[ Главная | Ресурсы | FAQ ] Уроки: [ Введение | DatePlan | SwissClock | HandMap | MobileDB | Noter | ThinkDB | HandMap33 | Lingua Franca | AlarmMaster | Race Fever | TinySheet | Strategic Commander | FlipChart ]
SwissClock (автор Daniel Rutemann) - это маленькая... нет, это большая отстойная программа-часы (рис. 1) для тех, кому влом носить на руке часы, но не влом носить в кармане PDA, или для тех, кому жалко потратить 5 долларов на китайский будильник, но не жалко 250 долларов на американский PDA. Взял я её только для того, чтобы хоть что-то сломать. :)
Зачем мне что-то ломать, спросите вы. Очень просто. Во-первых, мне нужно написать этот второй урок, а для этого хочется найти что-нибудь новенькое, а не повторять второй раз взлом старых программ. Во-вторых, надо набить руку, а, в-третьих, это входит в условия членства в закрытом клубе пилотоманов. :)
Cначала воспользуемся программкой prc2bin. Второй раз уже должно быть легко:
prc2bin.exe swissclock.prc
Файлов на этот раз очень много, поэтому лучше не просматривать их все, а сделать поиск по какому-нибудь слову из той формы, например, "entitles":
tFRM044c.bin tFRM0578.bin tFRM06a4.bin tFRM04b0.bin tFRM05dc.bin tFRM0708.bin tFRM0514.bin tFRM0640.bin tSTR03e8.bin
Тщательно сравнив две формы и немного поигравшись со SwissClock, можно определить, что tFRM0578.bin - это диалог About, а tFRM05dc.bin - это и есть мерзкий reminder. Его давить.
Руки уже чешутся отключить эту гадость, которая заставляет тратить нас драгоценные секунды жизни чёрт знает на что? Тогда вперед! Пускаем дизассемблер:
pilotdis.exe swissclock.prc
По первому уроку мы уже помним синтаксис вызова формы.
00000c3e 3f3c03ec MOVE.W #1004!$3ec,-(A7)
Перед идентификатором ресурса стоит знак доллара. Значит можно искать в файле swissclock.prc.s текст "$5dc". Ищем, находим только в одном месте:
0000433c 0c6d0002f9f4 CMPI.W #2,-1548(A5) 00004342 544f ADDQ.W #2,A7 00004344 660a BNE L395 00004346 3f3c05dc MOVE.W #1500!$5dc,-(A7) 0000434a 4e4fa19c TRAP #15,$A19C = sysTrapFrmPopupForm 0000434e 544f ADDQ.W #2,A7 00004350 4ebafb80 L395 JSR L372
Вначале выполняется CMPI.W (сравнение), потом через одну команду идёт условный переход к метке L395. А если перехода нет, то выводится гадкая форма... :( Надо всего лишь сделать переход безусловным. Делается это крайне просто.
00004344 600a BRA L395
Вместо байта 66h - условный переход (BNE) мы вставили байт 60h - безусловный переход (BRA). Смещение оставлено то же самое, поскольку команда наша на том же месте, что и старая. (вспомните, как в прошлом уроке, сдвинув команду на два байта вверх, пришлось увеличить смещение на два). Исправим файл, загрузим его в эмулятор или Пилот и проверим. Ура! Работает. Рисуем на пилоте вторую звездочку. :)
Запомните на будущее, как считать смещение для перехода. Нужно из адреса, куда мы будем переходить, вычесть адрес, в котором записана команда перехода, и из полученной разности вычесть ещё два. Пример:
00004350 - 0000 4344 = C C - 2 = A Смещение = 0A
Наверное Вам уже хочется поделиться с окружающими своими новыми уменями и сломанными программами. Это похвально. Для этого нужно как-то оформить результат работы. Учитывая небольшие размеры программ для Palm, можно просто распространять сломанный вариант. Ну а если вам почему-то не хочется этого делать, то можно создать небольшой файлик со следующим содержимым:
swissclock.prc - 11.07.00 10:02:44, 33110 bytes 00004344 66 60 #Removes startup shareware reminder (every launch)
Как видите, здесь указана вся нужная информация. Описан оригинальный файл, указано, по какому адресу нужно менять код, оригинальное значение и "правильное". Наконец, написано, какого рода защита была и что программа делала, пока её не сломали. Обзовите такой файл swissclock.crk и всё готово.
Теперь осталось что-то сделать с этим файлом. Надо его послать на "варезную сцену" (warez scene). :) Там товарищи разберутся, куда его пристроить и всё станет хорошо. Так что берите этот файлик и заполняйте его. Получившиеся три файла (*.crk, pilowar.nfo и сломанный *.prc), а также те файлы, что были в оригинальной поставке, если они маленькие, нужно упаковать зипом и послать на pilowar@tech-center.com. В pilowar.nfo вы можете указать свой ник, это прославит вас на весь мир. :)
Урок 1 - DatePlan | Урок 3 - HandMap |
Copyright © PalmPot.
Последнее обновление 12.07.2000.