It is my objective to prove to you that you can exploit this laziness...human weakness...to crack ALL a software companies program once you cracked just ONE of them!
The general idea goes like this...
1)    You visit this software house that has the
program you want.
2)    You download it...and you crack it...it may
take you 5 minutes...it may take you 3 hours...it doesn't manner so
long as you are learning. :=)
3)    Once you did your first crack...you'll basically
be able to crack ALL the other programs on their site BECAUSE they are
LAZY!
 
Ok...without further ado, let's meet our FIRST target...
Basta Computing, LLC
http://www.basta.com
 
This software house churns out heaps of software...the more popular ones are Filo, WhoSock and ExIcon.
Let's run Filo v1.7, we see the NAG, telling us how many
more days we have to "Evaluate" the target and such.
Choosing REGISTER, we come across 2 Edit boxes for us to put our
"numbers" in.
 
Enter some crap and choose register. Ok...it tells you that the number is "invalid". Dead-list the program and you notice that there is no dialog to tell you that the program has been registered sucessfully. Notice from the dead-listings that the codes are rather messed up with many, many Calls and Jumps...Hmm...no match for Zen cracking. Ok, out comes Softice.
Go to the registration dialog
Enter 12121212 34343434 as the registration key
Fire up Softice
task ok...name is Filo
hwnd Filo
get the handles for the edit boxes
bmsg on the edit boxes for wm_gettext       
; As suggested by +ORC ;)
back to the proggie and click on "ok"
Softice breaks
Press F5 a couple of times...this is to let the program read in
all the information from the different Edit Boxes...
Now search for your registration code with s 30:0 lffffffff
"12121212"
BPR on the location given
Let the program run, Softice will break again...notice that the
program has combined your Registration key to "1212121234343434"
BPR on this new location and let the program run again...
The program will break RIGHT IN THE MIDDLE OF THE COMPARISON ROUTINE...
Check this out...
* Referenced by a  Jump at Address:00407901(C)
|
:004078E9 8A0431                 
mov al, byte ptr [ecx + esi]
:004078EC 3C30                   
cmp al, 30                          
;"0"
:004078EE 0F8CC4000000           
jl 004079B8                         
;not a number
:004078F4 3C39                   
cmp al, 39                          
;"9"
:004078F6 0F8FBC000000           
jg 004079B8                         
;not a number
:004078FC 8BC1                   
mov eax, ecx
:004078FE 49                     
dec ecx
:004078FF 85C0                   
test eax, eax
:00407901 75E6                   
jne 004078E9
:00407903 0FBE5E0F               
movsx ebx, byte ptr [esi+0F]
:00407907 83EB30                 
sub ebx, 00000030
:0040790A 8D4301                 
lea eax, dword ptr [ebx+01]
:0040790D 83F80F                 
cmp eax, 0000000F
:00407910 7C03                   
jl 00407915
:00407912 83E80F                 
sub eax, 0000000F
 
* Referenced by a  Jump at Address:00407910(C)
|
:00407915 40                     
inc eax
:00407916 83F80F                 
cmp eax, 0000000F
:00407919 7C03                   
jl 0040791E
:0040791B 83E80F                 
sub eax, 0000000F
 
* Referenced by a  Jump at Address:00407919(C)
|
:0040791E 8BC8                   
mov ecx, eax
:00407920 83C003                 
add eax, 00000003
:00407923 83F80F                 
cmp eax, 0000000F
:00407926 7C03                   
jl 0040792B
:00407928 83E80F                 
sub eax, 0000000F
 
* Referenced by a Jump at Address:00407926(C)
:0040792B 0FBE3C31               
movsx edi, byte ptr [ecx + esi]
:0040792F 8BC8                   
mov ecx, eax
:00407931 83C003                 
add eax, 00000003
:00407934 83EF30                 
sub edi, 00000030
:00407937 83F80F                 
cmp eax, 0000000F
:0040793A 7C03                   
jl 0040793F
:0040793C 83E80F                 
sub eax, 0000000F
 
* Referenced by a  Jump at Address:0040793A(C)
|
:0040793F 8BD0                   
mov edx, eax
:00407941 83C003                 
add eax, 00000003
:00407944 83F80F                 
cmp eax, 0000000F
:00407947 7C03                   
jl 0040794C
:00407949 83E80F                 
sub eax, 0000000F
 
* Referenced by a  Jump at Address:00407947(C)
|
:0040794C 0FBE0C31               
movsx ecx, byte ptr [ecx + esi] ;always
:00407950 0FBE1432               
movsx edx, byte ptr [edx + esi] ;suspect
:00407954 8D0C89                 
lea ecx, dword ptr [ecx + 4*ecx];when you
:00407957 8D0C4A                 
lea ecx, dword ptr [edx + 2*ecx];see codes
:0040795A 0FBE1430               
movsx edx, byte ptr [eax + esi] ;like this
:0040795E 8D0C89                 
lea ecx, dword ptr [ecx + 4*ecx];Key manipulations!
:00407961 8D844A30EBFFFF         
lea eax, dword ptr [edx + 2*ecx - 000014D0]
:00407968 83F803                 
cmp eax, 00000003              
;after manipulations
                                         &nb!
sp;                       
;eax must be = 3
:0040796B 754B                   
jne 004079B8                   
;jump if faker
:0040796D 33C0                   
xor eax, eax
:0040796F B90F000000             
mov ecx, 0000000F
 
* Referenced by a  Jump at Address:00407982(C)
|
:00407974 0FBE1431               
movsx edx, byte ptr [ecx + esi] ;futher manipulation
:00407978 0FAFD1                 
imul edx, ecx
:0040797B 03C2                   
add eax, edx
:0040797D 8BD1                   
mov edx, ecx
:0040797F 49                     
dec ecx
:00407980 85D2                   
test edx, edx
:00407982 75F0                   
jne 00407974
:00407984 8D4B0E                 
lea ecx, dword ptr [ebx+0E]
:00407987 83F90F                 
cmp ecx, 0000000F
:0040798A 7C03                   
jl 0040798F
:0040798C 83E90F                 
sub ecx, 0000000F
 
* Referenced by a  Jump at Address:0040798A(C)
|
:0040798F 0FBE1431               
movsx edx, byte ptr [ecx + esi]
:00407993 0FAFD1                 
imul edx, ecx
:00407996 2BC2                   
sub eax, edx
:00407998 49                     
dec ecx
:00407999 7903                   
jns 0040799E
:0040799B 83C10F                 
add ecx, 0000000F
 
* Referenced by a  Jump at Address:00407999(C)
|
:0040799E 8A1C31                 
mov bl, byte ptr [ecx + esi]       
;more "magic"
:004079A1 0FBED3                 
movsx edx, bl                      
;being done...
:004079A4 0FAFCA                 
imul ecx, edx                      
;similar principle
:004079A7 2BC1                   
sub eax, ecx                       
;to my previous
:004079A9 B90A000000             
mov ecx, 0000000A                  
;essay...
:004079AE 99                     
cdq
:004079AF F7F9                   
idiv ecx
:004079B1 80C230                 
add dl, 30
:004079B4 3AD3                   
cmp dl, bl                         
;second check!
:004079B6 7406                   
je 004079BE                        
;jump if
                                         &nb!
sp;                           
;good guy...
 
* Referenced by a  Jump at Addresses:004078C9(C), :004078DE(C), :004078EE(C), :004078F6(C), :0040796B(C)
|
:004079B8 33C0                   
xor eax, eax
:004079BA 5F                     
pop edi
:004079BB 5E                     
pop esi
:004079BC 5B                     
pop ebx
:004079BD C3                     
ret
 
Based on the codes above, you can go write your own key generator...
Since this essay is NOT about KeyGen, let's just patch it...
 
:0040796B 754B                   
jne 004079B8              
;jump if faker
to        4840               
don't EVER jump
 
:004079B6 7406                   
je 004079BE               
;jump if good guy
to        EB06               
jump ALL the time
 
 
Ok...now that Filo v1.7 is done, lets look at WhoSock
v1.91...lo and behold!  Check this out!
...
...same code as Filo...
...
* Referenced by a  Jump at Address:00406737(C)
|
:0040673C 0FBE0C31               
movsx ecx, byte ptr [ecx+esi]
:00406740 0FBE1432               
movsx edx, byte ptr [edx+esi]
:00406744 8D0C89                 
lea ecx, dword ptr [ecx+4*ecx]
:00406747 8D0C4A                 
lea ecx, dword ptr [edx+2*ecx]
:0040674A 0FBE1430               
movsx edx, byte ptr [eax+esi]
:0040674E 8D0C89                 
lea ecx, dword ptr [ecx+4*ecx]
:00406751 8D844A30EBFFFF         
lea eax, dword ptr [edx+2*ecx-000014D0]
:00406758 83F809                 
cmp eax, 00000009          
;Slightly diff "checksum"
:0040675B 754B                   
jne 004067A8               
;SAME jump length!
:0040675D 33C0                   
xor eax, eax
:0040675F B90F000000             
mov ecx, 0000000F
 
* Referenced by a  Jump at Address:00406772(C)
|
:00406764 0FBE1431               
movsx edx, byte ptr [ecx+esi]
:00406768 0FAFD1                 
imul edx, ecx
:0040676B 03C2                   
add eax, edx
:0040676D 8BD1                   
mov edx, ecx
:0040676F 49                     
dec ecx
:00406770 85D2                   
test edx, edx
:00406772 75F0                   
jne 00406764
:00406774 8D4B0E                 
lea ecx, dword ptr [ebx+0E]
:00406777 83F90F                 
cmp ecx, 0000000F
:0040677A 7C03                   
jl 0040677F
:0040677C 83E90F                 
sub ecx, 0000000F
 
* Referenced by a  Jump at Address:0040677A(C)
|
:0040677F 0FBE1431               
movsx edx, byte ptr [ecx+esi]
:00406783 0FAFD1                 
imul edx, ecx
:00406786 2BC2                   
sub eax, edx
:00406788 49                     
dec ecx
:00406789 7903                   
jns 0040678E
:0040678B 83C10F                 
add ecx, 0000000F
 
* Referenced by a  Jump at Address:00406789(C)
|
:0040678E 8A1C31                 
mov bl, byte ptr [ecx+esi]
:00406791 0FBED3                 
movsx edx, bl
:00406794 0FAFCA                 
imul ecx, edx
:00406797 2BC1                   
sub eax, ecx
:00406799 B90A000000             
mov ecx, 0000000A
:0040679E 99                     
cdq
:0040679F F7F9                   
idiv ecx
:004067A1 80C230                 
add dl, 30
:004067A4 3AD3                   
cmp dl, bl                       
;SAME 2nd Check
:004067A6 7406                   
je 004067AE                      
;SAME jump length!!!
 
 
 
Geez!  Now look at ExIcon v1.9a...
...
...same code as Filo...
...
* Referenced by a  Jump at Address:0040AC77(C)
|
:0040AC7C 0FBE0C31               
movsx ecx, byte ptr [ecx+esi]
:0040AC80 0FBE1432               
movsx edx, byte ptr [edx+esi]
:0040AC84 0FBE0430               
movsx eax, byte ptr [eax+esi]
:0040AC88 8D0C89                 
lea ecx, dword ptr [ecx+4*ecx]
:0040AC8B 8D0C4A                 
lea ecx, dword ptr [edx+2*ecx]
:0040AC8E 8D1489                 
lea edx, dword ptr [ecx+4*ecx]
:0040AC91 8D8C5030EBFFFF         
lea ecx, dword ptr [eax+2*edx-000014D0]
:0040AC98 83F902                 
cmp ecx, 00000002             
;Slightly diff "checksum"
:0040AC9B 754B                   
jne 0040ACE8                  
;SAME JUMP Length
:0040AC9D 33C0                   
xor eax, eax
:0040AC9F B90F000000             
mov ecx, 0000000F
 
* Referenced by a  Jump at Address:0040ACB2(C)
|
:0040ACA4 0FBE1431               
movsx edx, byte ptr [ecx+esi]
:0040ACA8 0FAFD1                 
imul edx, ecx
:0040ACAB 03C2                   
add eax, edx
:0040ACAD 8BD1                   
mov edx, ecx
:0040ACAF 49                     
dec ecx
:0040ACB0 85D2                   
test edx, edx
:0040ACB2 75F0                   
jne 0040ACA4
:0040ACB4 8D4B0E                 
lea ecx, dword ptr [ebx+0E]
:0040ACB7 83F90F                 
cmp ecx, 0000000F
:0040ACBA 7C03                   
jl 0040ACBF
:0040ACBC 83E90F                 
sub ecx, 0000000F
 
* Referenced by a  Jump at Address:0040ACBA(C)
|
:0040ACBF 0FBE1431               
movsx edx, byte ptr [ecx+esi]
:0040ACC3 0FAFD1                 
imul edx, ecx
:0040ACC6 2BC2                   
sub eax, edx
:0040ACC8 49                     
dec ecx
:0040ACC9 7903                   
jns 0040ACCE
:0040ACCB 83C10F                 
add ecx, 0000000F
 
* Referenced by a  Jump at Address:0040ACC9(C)
|
:0040ACCE 8A1C31                 
mov bl, byte ptr [ecx+esi]
:0040ACD1 0FBED3                 
movsx edx, bl
:0040ACD4 0FAFCA                 
imul ecx, edx
:0040ACD7 2BC1                   
sub eax, ecx
:0040ACD9 B90A000000             
mov ecx, 0000000A
:0040ACDE 99                     
cdq
:0040ACDF F7F9                   
idiv ecx
:0040ACE1 80C230                 
add dl, 30
:0040ACE4 3AD3                   
cmp dl, bl                   
;Good old 2nd check
:0040ACE6 7406                   
je 0040ACEE                  
;SAME jump length AGAIN!
 
 
Horas v2.1...SAME STORY!
 
Ok ok...I think I've proved my point...I cannot be bored to find
out more, but I reckon that if 4 of their softwares have the EXACT SAME
protection, then ALL the OTHER software their (about 8 others) should HAVE
EXACTLY the same protection!
 
 
 
Anyway I have drafted a general crack patch below which should
be able to crack ALL the software on their site...have fun!
(c) Plushmm 1997. All rights reserved