Урок 8 - Взлом программы Lingua Franca

  1. Lingua Franca
  2. Взлом

Lingua Franca

Lingua Franca - это хороший словарь, который обладает довольно удобным интерфейсом, а также поддерживает маленькие (211 слов) словари для довольно большого числа языков:

Маленькие (~211 слов): Afrikanns, Arabic, Armenian, Azerbaijani, Bengali, Cymraeg (Welsh), Dansk, Deutsch, Espanol, Esparanto, Francois, Greek, Han-kuk-o (Korean), Hawaiian, Hindi, Indonesian, Irish Galic, Italiano, Ivrit Hebrew, Latina, Magyar (Hungarian), Nihongo, Norsk, Farsi (Persian), Polski, Portugues, Russky, Suomea (Finnish), Svenska, Taioan Holooe, Turkce, Yiddish.

Средние (500-1500 слов): Czech, Ivrit (using Hebrew font), Portugues, Romanian, Yiddish.

Большие (3500-10000 слов): Deutsch, Espanol, Francais, Italiano, Latina.

В дополнение к этому, Lingua Franca обладает ещё рядом интересных возможностей: перевод чисел, перевод времени и карточками для заучивания слов.

Взлом

Нашли два места, где есть ссылка на форму $4e84. Поставили по очереди туда debug break и выяснили, что при открытии окна About используется первый участок кода по адресу 00003554:

00003554   4e56fffc			L509	LINK	A6,#-4
00003558   4227					CLR.B	-(A7)
0000355a   48780004				PEA	$0004.W
0000355e   486efffc				PEA	-4(A6)
00003562   4e4fa027				TRAP	#15,$A027 = sysTrapMemSet
00003566   7021					MOVEQ	#33,D0
00003568   2d40fffc				MOVE.L	D0,-4(A6)
0000356c   486efffc				PEA	-4(A6)
00003570   487a0022				PEA	L510
00003574   3f3c4e84				MOVE.W	#20100!$4e84,-(A7)
00003578   4ebae3ac				JSR	L273
0000357c   4e5e					UNLK	A6
0000357e   4e75					RTS

Замечательно. Теперь надо сделать, чтобы эта штука не вызывалась, когда прошло более 30 дней. Ищем все места, где есть переход на метку L509. Перебираем все варианты. Правильный этот:

00001f9a   4a6dfc92			L329	TST.W	-878(A5)
00001f9e   6604					BNE	L330
00001fa0   4eba15b2				JSR	L509
00001fa4   4a6dfc92			L330	TST.W	-878(A5)
00001fa8   670e					BEQ	L331
00001faa   3f3c05dc				MOVE.W	#1500!$5dc,-(A7)
00001fae   4e4fa19b				TRAP	#15,$A19B = sysTrapFrmGotoForm
00001fb2   4eba0270				JSR	L355
00001fb6   544f					ADDQ.W	#2,A7

Нам нужно не допустить переход по адресу 00001fa0. Для этого мы делаем переход BNE L330 безусловным (6004). Ниже мы видим ссылку на форму $5dc. Посмотрев в ресурсе tFRM05dc.bin, что это такое, находим, что это основной экран программы. Он-то нам и нужен. Чтобы переход BEQ L331 не сработал никогда, мы его забиваем 4e71. Теперь всё замечательно. Маленькое косметическое исправление: в окне About видны слова 0 days left in demo! Чтобы подставить туда Registered, находим это слово в ресурсе tSTR4e22.bin, а потом ищем ссылку на $4e22 в программе. Нашли:

0000388c   4e4fa185				TRAP	#15,$A185 = sysTrapFrmShowObject
00003890   2f3c74535452				MOVE.L	#1951618130!$74535452,-(A7)
00003896   3f3c4e22				MOVE.W	#20002!$4e22,-(A7)
0000389a   486dfc9a				PEA	-870(A5)
0000389e   4eba4d32				JSR	L1042

Это секция под меткой L523. А немного выше есть условный переход в секцию L524

000037d6   4e4fa184				TRAP	#15,$A184 = sysTrapFrmHideObject
000037da   0c43ffff				CMPI.W	#-1,D3
000037de   4fef0042				LEA	66(A7),A7
000037e2   6600010e				BNE	L524
000037e6   3f3c4e85				MOVE.W	#20101!$4e85,-(A7)
000037ea   2f0a					MOVE.L	A2,-(A7)

который нам не нужен, потому что в ней выводится текст "Your Demo is Expired!". Поэтому мы забьём этот условный переход 4e714e71 и он никогда не случится. Теперь в окне About честно написано Registered.

Урок 7 - HandMap 3.3 Урок 9 - AlarmMaster
TopList

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