Table of Contents

Shortnote

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.

Check If Demo Expired

                                    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        

Is Expired?

                                    _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        

More Expired Checks

obj_msg_demoExpired is referenced in 5 different places, the first one being the isExpired method.

Second

                                    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
...

Third

                                    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
...

Fourth

                                    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
...

Fifth

                                    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…)!

OhMaGawd! Mr. Proper, is that you?