Smasher (for Mac) is a tool to browse and clean fonts. It can be easily smashed and turned into a never-ending demo by jumping over the segments containing obj_msg_demoExpired
and by incapacitating the isExpired
and the checkIfDemoExpired
methods.
meth_Registration__checkIfDemoExpired_: 0001e311 55 push ebp 0001e312 89E5 mov ebp, esp 0001e314 53 push ebx 0001e315 83EC24 sub esp, 0x24 0001e318 E9A0000000 jmp 0x1e3bd ; @selector(alloc) ... 0001e3bd 83C424 add esp, 0x24 ; XREF=0x1e318 0001e3c0 5B pop ebx 0001e3c1 C9 leave 0001e3c2 C3 ret
_isExpired_8772: 00008772 55 push ebp ; XREF=0x881b ... 000087a8 E922000000 jmp 0x87cf ... 000087cf 0FBEC2 movsx eax, dl ; XREF=0x87a8 000087d2 83C410 add esp, 0x10 000087d5 5B pop ebx 000087d6 5E pop esi 000087d7 C9 leave 000087d8 C3 ret
obj_msg_demoExpired
is referenced in 5 different places, the first one being the isExpired
method.
meth_AppController_applicationDidFinishLaunching_: 00008deb 55 push ebp ... 00008e66 E9B0000000 jmp 0x8f1b ... 00008f1b 8B3DC4100400 mov edi, dword [ds:objc_msg_alloc] ; @selector(alloc) XREF=0x8e66, 0x8ea5 00008f21 8B35C0100400 mov esi, dword [ds:objc_msg_init] ; @selector(init) 00008f27 897C2404 mov dword [ss:esp+0x4], edi ; XREF=0x8ef8 ...
meth_SmashWindow_toolBarSmash_: 000124da 55 push ebp 000124db 89E5 mov ebp, esp 000124dd 57 push edi ... 00012558 E94B000000 jmp 0x125a8 0001255d 90 nop ... 000125a8 897C2404 mov dword [ss:esp+0x4], edi ; XREF=0x12558, 0x1257f 000125ac A134170400 mov eax, dword [ds:cls_Registration] 000125b1 890424 mov dword [ss:esp], eax ...
meth_CachePreferenceView_isButttonEnabled: 0001ada8 55 push ebp 0001ada9 89E5 mov ebp, esp 0001adab 83EC28 sub esp, 0x28 ... 0001ade6 E91F000000 jmp 0x1ae0a 0001adeb 90 nop ... 0001ae0a A118160400 mov eax, dword [ds:objc_msg_isAuthorized] ; @selector(isAuthorized) XREF=0x1ade6 0001ae0f 89442404 mov dword [ss:esp+0x4], eax 0001ae13 893C24 mov dword [ss:esp], edi ...
meth_DemoModeWarning_beginSheetModalForWindow_: 0001d6cf 55 push ebp 0001d6d0 89E5 mov ebp, esp 0001d6d2 57 push edi ... 0001d71d E9B4000000 jmp 0x1d7d6 0001d722 90 nop ... 0001d7d6 8B1510100400 mov edx, dword [ds:objc_msg_instance] ; @selector(instance) XREF=0x1d71d 0001d7dc 89542404 mov dword [ss:esp+0x4], edx 0001d7e0 A134170400 mov eax, dword [ds:cls_Registration] ...
Enjoy this boring application at version 2.102 (we're not even exactly sure what it does… It does something alright…)!