Phone Book Pro 97 v2.31.0 build 482
Vindicating the "blacklisted" Phrozen crew

by Silicon Surfer
(08 September 1997)


Courtesy of Fravia's page of reverse engineering

Well, here is what Silicon surfer wrote to me:
I chose this on to document for simply becuase there were so many references to Phrozen Crew and their members inside to crash their systems if they were to use those names. I found it fitting retribution to make the Registered To section read Phrozen Crew instead of Unregistered.
 
===================================================================== 
 
Target:   Phone Book Pro 97 v2.31.0 build 482 
URL:      http://www.idyle.com/pbpro97/download/pbpro97.zip
Reason:   Found a request dated 09/04/97 asking for it in abc. 
 
Tools:    Hex Workshop v2.53   (see +HCU's project 1)
          W32Dasm v8.9         (see +HCU's project 0)
        
OK, first thing I like to do is get a String Data Reference list and  
read through it.  I found some 'interesting' references. 
 
" PLEASE REGISTER. Read "Register.txt""      ; Nag 
"42F6171D60EF25F30105090B066BA8"             ; Possible Code? 
"43EF2E2A67E144D42BE83FCA45"                 ; " " 
"6C87868FB19963B270AF69B954DE"               ; " " 
"72878A97155AC14CD84CC055"                   ; " " 
"Application has a CRC error!"              >; Hmm... CRC checking eh? 
"Application ID block not found!"            ; " " 
"Can not have more than "                   >; Sounds like some kinda limit 
"CREW"                                       ; Oh my, references to PC97! 
"MAD MAX!"                                   ; " " 
"MADMAX!"                                    ; " " 
"PHROZEN"                                    ; " " 
"Please register your phone book "           ; Nag 
"Registration code:"                         ; Self Explanatory 
"RegistrationCode"                           ; " " 
"SALTINE"                                    ; More PC97 
"Sex"                                        ; Just like the word! 
"The Application CRC is not calculated "     ; Bad CRC Results 
"This is an unregistered version, "         >; Direct from the main Nag  
"Unregistered Version"                       ; Nag 
"Unregistered"                              >; " " 
"USER NAME"                                  ; Self Explanatory 
"Username"                                   ; " " 
 
Lest test the proggie, see what needs to be done. 
 
First thing I notice: 
 
1) This damn thing is slow on entry!  CRC checking will do that.   
Maybe we should speed this up a    little bit, but that will be later.   
 
2) Our first line in String References shows on the opening Nag Screen. 
 
3) Register.txt says:  
 
The registered version will remove the limit of 20 entries  
as well as the nag screen which we all dislike!  So, if you  
use it, register it!  
 
   So there are only 20 entries allowed. 
 
4) Changed system date to 2010 and the program still runs. 
 
 
Assignment, either crack password & CRC, or crack CRC & Nag Screen &  
20 entries.   
 
 
Lets start with the CRC checking... can't apply the crack if CRC fails!   
Here is the code from the reference to "Application has a CRC error!". 
 
 
* Referenced by a CALL at Address: 
|:00456884 
| 
:00456C14 53                      push ebx 
:00456C15 56                      push esi 
:00456C16 8BF0                    mov esi, eax 
:00456C18 C70580674D0000800000    mov dword ptr [004D6780], 00008000 
:00456C22 8BC6                    mov eax, esi 
:00456C24 E85BFFFFFF              call 00456B84        "Application ID block not found!" 
          | 
:00456C44 B8946C4500              mov eax, 00456C94 
:00456C49 E84AB9FEFF              call 00442598 
 
* Jump from Addresses:00456C2E(C), :00456C42(C) 
| 
:00456C4E 83FBFE                  cmp ebx, FFFFFFFE    "Application has a CRC error!" 
          | 
:00456C53 B8BC6C4500              mov eax, 00456CBC 
:00456C58 E83BB9FEFF              call 00442598 
 
* Jump from Address:00456C51(C) 
| 
:00456C5D 83FBFD                  cmp ebx, FFFFFFFD    "The Application CRC is not calculated 
                               ->"yet." 
          | 
:00456C62 B8046D4500              mov eax, 00456D04 
:00456C67 E82CB9FEFF              call 00442598 
:00456C6C A1E84F4D00              mov eax, dword ptr [004D4FE8] 
:00456C71 8B00                    mov eax, dword ptr [eax] 
:00456C73 E8F4BEFDFF              call 00432B6C 
 
* Jump from Address:00456C60(C) 
| 
:00456C78 4B                      dec ebx 
:00456C79 740C                    je 00456C87 
:00456C7B A1E84F4D00              mov eax, dword ptr [004D4FE8] 
:00456C80 8B00                    mov eax, dword ptr [eax] 
:00456C82 E8E5BEFDFF              call 00432B6C 
 
* Jump from Address:00456C79(C) 
| 
:00456C87 5E             pop esi 
:00456C88 5B             pop ebx 
:00456C89 C3             ret         "This copy of Phone" ;is registered 
          | 
:004BB9FD 6844BF4B00              push 004BBF44 
:004BBA02 8D4DF4                  lea ecx, dword ptr [ebp-0C] 
:004BBA05 A1D84E4D00              mov eax, dword ptr [004D4ED8] 
:004BBA0A 8B00                    mov eax, dword ptr [eax] 
:004BBA0C 8BD3                    mov edx, ebx 
:004BBA0E E8659FFDFF              call 00495978 
:004BBA13 FF75F4                  push [ebp-0C] 
 
-- cut to save space -- 
 
* Jump from Address:004BB9C1(C)       <<--- Check this call! 
| 
:004BBA8E 8B0DE84F4D00            mov ecx, dword ptr [004D4FE8] 
:004BBA94 8B09                    mov ecx, dword ptr [ecx] 
:004BBA96 B201                    mov dl, 01 
:004BBA98 A1508F4700              mov eax, dword ptr [00478F50] 
:004BBA9D E87E20F7FF              call 0042DB20 
:004BBAA2 8B15B84E4D00            mov edx, dword ptr [004D4EB8] 
:004BBAA8 8902                    mov dword ptr [edx], eax 
:004BBAAA A1B84E4D00              mov eax, dword ptr [004D4EB8] 
:004BBAAF 8B00                    mov eax, dword ptr [eax] 
:004BBAB1 8B80DC010000            mov eax, dword ptr [eax+000001DC] 
:004BBAB7 BA9F400000              mov edx, 0000409F 
:004BBABC E88335F8FF              call 0043F044 
:004BBAC1 A1B84E4D00              mov eax, dword ptr [004D4EB8] 
:004BBAC6 8B00                    mov eax, dword ptr [eax] 
:004BBAC8 8B80DC010000            mov eax, dword ptr [eax+000001DC] 
:004BBACE 8B5024                  mov edx, dword ptr [eax+24] 
:004BBAD1 D1EA                    shr edx, 1 
:004BBAD3 8B0DB84E4D00            mov ecx, dword ptr [004D4EB8] 
:004BBAD9 E86635F8FF              call 0043F044 
:004BBADE A1B84E4D00              mov eax, dword ptr [004D4EB8] 
:004BBAE3 8B00                    mov eax, dword ptr [eax] 
:004BBAE5 8B80E0010000            mov eax, dword ptr [eax+000001E0] 
 
* StringData Ref from Code Obj ->"This is an unregistered version," 
                               ->"please consult "REGISTER.TXT" " 
                               ->"for more details." 
          | 
:004BBAEB BAA4BF4B00              mov edx, 004BBFA4 
 
Simple routine, do check, if match goto Nag, else continue as if
registered.   
So we change: 
 
:004BB9C1 0F84C7000000            je 004BBA8E 
to 
:004BB9C1 0F85C7000000            jne 004BBA8E 
 
Nag screen gone, only one more!!!  But wait, after further review of the  
program, it is COMPLETELY registered.  No more how to purchase, and about  
screen shows registered to UNREGISTERED.  Great!  So we skip the 20 entries  
and are home free.   
 
However, it seems Damien Rame doesn't like PhrozenC, and since 'Phrozen 
Crew' and  'Unregistered' have the same number of characters... (Evil 
Grin)... let us make one last change. 
 
Search for "UNREGISTERED" in the hex editor, and change it to Phrozen Crew.   
 
Crack done!   
  _________.__.____    .__                      
 /   _____/|__|    |   |__| ____  ____   ____   
 \_____  \ |  |    |   |  |/ ___\/  _ \ /    \  
 /        \|  |    |___|  \  \__(  
(c) Silicon Surfer, 1997. All rights reversed.
		
You are deep inside fravia's page of reverse engineering, choose your way out:

homepage links red anonymity +ORC students' essays tools cocktails
academy database antismut search_forms mail_fravia
is reverse engineering legal?