--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
Programa Lotus SmartSuite Millenium Edition W95 / W98 / NT
Descripción Suite Ofimatica bastante mejor que el Office de Mocosoft
Tipo Trial de 30 dias
Url http://www.lotus.com
Protección Nag Screen. Time Limit 30 Dias
Dificultad 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas SoftIce v3.25, W32dasm v8.9, UltraEdit v6.10a
Objetivo Simular estar registrados.
Cracker Mr.WhiTe [WkT!]
Fecha 15 de Julio de 1999

Introducción
Mientras buscaba entre mis cds algun programa interesante con el que juguetear un rato, me he topado por casualidad con un cd (PCMania nº76) con esta interesante Suite de Lotus. Es curioso, te acostumbras a usar el office de Mocosoft y cuando llevas media vida usando esa bazofia descubres una alternativa MUCHO MEJOR. Que putada ¿no? en fin.... aun estamos a tiempo de cambiar a LOTUS :o)

Realmente esta Suite me ha sorprendido gratamente, quiza Lotus deberia hacer una campaña publicitaria mas agresiva y dar a conocer mejor sus productos. Yo no se que coño tiene Mocosoft (bueno si lo se, las pelas del Gates claro) que embauca a todo el mundo para que usemos esa mierda de programas llenos de bugs. Desde luego no sere yo uno de los incautos compradores del Office 2000. Mocosoft apesta :o/

Al Atake
Bien, sin mas preambulos vamos a proceder a ANALIZAR LA PROTECCION empleada por LOTUS en esta SMARTSUITE MILLENIUM EDITION :o)
Se trata de una version Trial de 30 dias, plenamente operativa, con una pesada nag screen del tipo "dialogboxparama".

Comenzaremos por el tipico " BPX GETLOCALTIME " Pulsamos F11 y despues F12 y nuestro SoftIce aterriza en: (vemos que esta en el archivo LTSMKT01.DLL)

* Reference To: KERNEL32.CreateFileA, Ord:002Bh
                                  |
:10001BDF FF1514B40110            Call dword ptr [1001B414]
:10001BE5 8945F4                  mov dword ptr [ebp-0C], eax
:10001BE8 837DF4FF                cmp dword ptr [ebp-0C], FFFFFFFF
:10001BEC 0F84D1010000            je 10001DC3
:10001BF2 8D45F8                  lea eax, dword ptr [ebp-08]
:10001BF5 50                      push eax
:10001BF6 E8F5140000              call 100030F0 <--- APARECEMOS AQUI !!!
:10001BFB 83C404                  add esp, 00000004
:10001BFE 8B45F8                  mov eax, dword ptr [ebp-08]
:10001C01 8945E8                  mov dword ptr [ebp-18], eax
:10001C04 68408D0110              push 10018D40
:10001C09 68388D0110              push 10018D38
:10001C0E 68308D0110              push 10018D30
:10001C13 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001C16 50                      push eax

* Reference To: KERNEL32.GetFileTime, Ord:00DBh <--- Cuando se ha usado el archivo por ultima vez
                                  |
:10001C17 FF150CB40110            Call dword ptr [1001B40C]
:10001C1D 6A00                    push 00000000
:10001C1F 6A00                    push 00000000
:10001C21 8B4510                  mov eax, dword ptr [ebp+10]
:10001C24 50                      push eax
:10001C25 E8D3030000              call 10001FFD
:10001C2A 83C404                  add esp, 00000004
:10001C2D 50                      push eax
:10001C2E 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001C31 50                      push eax

* Reference To: KERNEL32.SetFilePointer, Ord:01F8h
                                  |
:10001C32 FF15D0B30110            Call dword ptr [1001B3D0]
:10001C38 6A00                    push 00000000
:10001C3A 8D45FC                  lea eax, dword ptr [ebp-04]
:10001C3D 50                      push eax

* Possible Reference to String Resource ID=00004: "ltsuite.exe"
                                  |
:10001C3E 6A04                    push 00000004
:10001C40 8D45F0                  lea eax, dword ptr [ebp-10]
:10001C43 50                      push eax
:10001C44 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001C47 50                      push eax

* Reference To: KERNEL32.ReadFile, Ord:01B8h
                                  |
:10001C48 FF1518B40110            Call dword ptr [1001B418] <---Lee la fecha de instalacion
:10001C4E 6A00                    push 00000000
:10001C50 8D45FC                  lea eax, dword ptr [ebp-04]
:10001C53 50                      push eax

* Possible Reference to String Resource ID=00004: "ltsuite.exe"
                                  |
:10001C54 6A04                    push 00000004
:10001C56 8D45E0                  lea eax, dword ptr [ebp-20]
:10001C59 50                      push eax
:10001C5A 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001C5D 50                      push eax




* Reference To: KERNEL32.ReadFile, Ord:01B8h
                                  |
:10001C5E FF1518B40110            Call dword ptr [1001B418] <---Lee la fecha del ultimo uso 
:10001C64 837DF000                cmp dword ptr [ebp-10], 00000000
:10001C68 0F8553000000            jne 10001CC1
:10001C6E 8B45E8                  mov eax, dword ptr [ebp-18]
:10001C71 50                      push eax
:10001C72 8B4510                  mov eax, dword ptr [ebp+10]
:10001C75 50                      push eax
:10001C76 E898010000              call 10001E13
:10001C7B 83C408                  add esp, 00000008
:10001C7E 85C0                    test eax, eax
:10001C80 0F8425000000            je 10001CAB
:10001C86 8B45E8                  mov eax, dword ptr [ebp-18]
:10001C89 8945F0                  mov dword ptr [ebp-10], eax
:10001C8C 8B45E8                  mov eax, dword ptr [ebp-18]
:10001C8F 8945E0                  mov dword ptr [ebp-20], eax
:10001C92 8B450C                  mov eax, dword ptr [ebp+0C]
:10001C95 25FFFF0000              and eax, 0000FFFF
:10001C9A A33C5B0110              mov dword ptr [10015B3C], eax


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001C68(C)
|
:10001CC1 8B45E0                  mov eax, dword ptr [ebp-20]
:10001CC4 3945E8                  cmp dword ptr [ebp-18], eax <--- Compara fecha actual con fecha limite
:10001CC7 0F8316000000            jnb 10001CE3 
:10001CCD C7053C5B0110FFFFFFFF    mov dword ptr [10015B3C], FFFFFFFF
:10001CD7 C745EC00000000          mov [ebp-14], 00000000
:10001CDE E966000000              jmp 10001D49


si fecha actual es > fecha limite SALTARA

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001CC7(C)
|
:10001CE3 8B450C                  mov eax, dword ptr [ebp+0C]
:10001CE6 25FFFF0000              and eax, 0000FFFF
:10001CEB 8D0480                  lea eax, dword ptr [eax+4*eax]
:10001CEE 8D04C0                  lea eax, dword ptr [eax+8*eax]
:10001CF1 8D0440                  lea eax, dword ptr [eax+2*eax]
:10001CF4 8D0480                  lea eax, dword ptr [eax+4*eax]
:10001CF7 C1E007                  shl eax, 07
:10001CFA 0345F0                  add eax, dword ptr [ebp-10]
:10001CFD 3B45E8                  cmp eax, dword ptr [ebp-18] <-- Compara fecha de instalacion con la fecha actual
:10001D00 0F8316000000            jnb 10001D1C <-- Lo cambiamos a JNE 
:10001D06 C7053C5B0110FFFFFFFF    mov dword ptr [10015B3C], FFFFFFFF



* Possible Reference to String Resource ID=00001: "4"
                                  |
:10001D10 C745EC01000000          mov [ebp-14], 00000001
:10001D17 E92D000000              jmp 10001D49

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001D00(C)
|
:10001D1C 8B45E8                  mov eax, dword ptr [ebp-18]
:10001D1F 2B45F0                  sub eax, dword ptr [ebp-10]
:10001D22 8945E4                  mov dword ptr [ebp-1C], eax
:10001D25 8B4D0C                  mov ecx, dword ptr [ebp+0C]
:10001D28 81E1FFFF0000            and ecx, 0000FFFF
:10001D2E BB80510100              mov ebx, 00015180
:10001D33 8B45E4                  mov eax, dword ptr [ebp-1C]
:10001D36 2BD2                    sub edx, edx
:10001D38 F7F3                    div ebx
:10001D3A 2BC8                    sub ecx, eax <--- DIAS QUE NOS QUEDAN
:10001D3C 890D3C5B0110            mov dword ptr [10015B3C], ecx

* Possible Reference to String Resource ID=00001: "4"
                                  |
:10001D42 C745EC01000000          mov [ebp-14], 00000001 <-- FLAG



* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:10001CBC(U), :10001CDE(U), :10001D17(U)
|
:10001D49 837DEC00                cmp dword ptr [ebp-14], 00000000
:10001D4D 0F8E4D000000            jle 10001DA0
:10001D53 8B45E8                  mov eax, dword ptr [ebp-18]
:10001D56 8945E0                  mov dword ptr [ebp-20], eax
:10001D59 6A00                    push 00000000
:10001D5B 6A00                    push 00000000
:10001D5D 8B4510                  mov eax, dword ptr [ebp+10]
:10001D60 50                      push eax
:10001D61 E897020000              call 10001FFD
:10001D66 83C404                  add esp, 00000004
:10001D69 50                      push eax
:10001D6A 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001D6D 50                      push eax




* Reference To: KERNEL32.WriteFile, Ord:024Fh
                                  |
:10001D84 FF15CCB30110            Call dword ptr [1001B3CC]
:10001D8A 6A00                    push 00000000
:10001D8C 8D45FC                  lea eax, dword ptr [ebp-04]
:10001D8F 50                      push eax

* Possible Reference to String Resource ID=00004: "ltsuite.exe"
                                  |
:10001D90 6A04                    push 00000004
:10001D92 8D45E0                  lea eax, dword ptr [ebp-20] <-- AQUI
:10001D95 50                      push eax
:10001D96 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001D99 50                      push eax

* Reference To: KERNEL32.WriteFile, Ord:024Fh
                                  |
:10001D9A FF15CCB30110            Call dword ptr [1001B3CC]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001D4D(C)
|
:10001DA0 68408D0110              push 10018D40
:10001DA5 68388D0110              push 10018D38
:10001DAA 68308D0110              push 10018D30
:10001DAF 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001DB2 50                      push eax

* Reference To: KERNEL32.SetFileTime, Ord:01F9h
                                  |
:10001DB3 FF15C8B30110            Call dword ptr [1001B3C8]
:10001DB9 8B45F4                  mov eax, dword ptr [ebp-0C]
:10001DBC 50                      push eax

* Reference To: KERNEL32.CloseHandle, Ord:0016h

UNA CUESTION DE ESTETICA
¿Como podemos evitar que nos aparezca esa pesadisima NAG SCREEN al comienzo de cada programa?
Veamos, como he dicho al principio de este tutorial, esta NAG SCREEN apesta a "dialogboxparama". Asi que ponemos un breakpoint "bpx dialogboxparama" F11 y aterrizamos en :004012A4 Call dword ptr [0040A264] (Estamos dentro del archivo ltsuite.exe)

:0040128E 8B5D08                  mov ebx, dword ptr [ebp+08]
:00401291 8BCF                    mov ecx, edi
:00401293 53                      push ebx
:00401294 E827FEFFFF              call 004010C0
:00401299 57                      push edi
:0040129A 68E0124000              push 004012E0
:0040129F 6A00                    push 00000000

* Reference To: USER32.DialogBoxParamA, Ord:008Ah
                                  |
:004012A4 FF1564A24000            Call dword ptr [0040A264] <--- APARECEMOS AQUI
:004012AA 8B4DF4                  mov ecx, dword ptr [ebp-0C]
:004012AD 5F                      pop edi
:004012AE 64890D00000000          mov dword ptr fs:[00000000], ecx
:004012B5 5E                      pop esi
:004012B6 5B                      pop ebx
:004012B7 8BE5                    mov esp, ebp
:004012B9 5D                      pop ebp
:004012BA C21000                  ret 0010


Si pulsamos el boton "OK" nos devolvera el valor 10. Asi que vamos a provocar que el propio programa nos pulse el boton automaticamente y no nos de ni tiempo a ver esa NAG
 En  :00401299 57 PUSH EDI
     (699h)

 Lo cambiamos Por 
 
 :00401299 B810000000 MOV EAX,10

 En :0040129E 
     (69Eh)

 Lo cambiamos Por EB0A JMP 004012AA

 Finalmente  :004012A0 00 
              (6a0h)

 Lo cambiamos por 90 (NOP)


PARCHES:

 1) compnent/ltsuite.exe

 En este archivo vamos a parchear para quitar la Nag inicial

 :00401299 57 PUSH EDI
 
 POR :00401299 B810000000 MOV EAX,10

 En :0040129E 
 
 POR  EB0A JMP 004012AA

En :004012A0 00 

 POR 90 (NOP)

 Tenemos que buscar: 5768E01240006A00
 Y reemplazarla por  B810000000EB0A90
 (699h)


 2a) ARCHIVO LTSMKT01.DLL [CASO A]
    Corresponde a las versiones RELEASE 9 for Windows N9.0.9805.2800

    wordpro/ltsmkt01.dll version 1.0.0.1 Tamaño 305.664 bytes
    scrncam/ltsmkt01.dll version 1.0.0.1 Tamaño 305.664 bytes
    approach/ltsmkt01.dll version 1.0.0.1 Tamaño 305.664 bytes
    123/ltsmkt01.dll version 1.0.0.1 Tamaño 305.664 bytes
    organize/ltsmkt01.dll version 1.0.0.1 Tamaño 305.664 bytes


 :10001CC7 0F8316000000 JNB 10001CE3

 POR

 :10001CC7 0F8516000000 JNE 10001CE3

 Y  :10001D00 0F8316000000 JNB 10001D1C

 POR

 :10001D00 0F8516000000 JNE 10001D1C

 Finalmente en :10001D3A 2BC8 SUB ECX,EAX

 POR :10001D3A 90 Y :10001D3A 90
 
Asi pues, buscamos con el Ultraedit (o cualquier otro editor hexa) 
"0F8316000000" y lo reemplazamos por "0F8516000000"

Y DESPUES buscamos "2BC8890D" y lo reemplazamos por "9090890D"


2b) ARCHIVO LTSMKT01.DLL [CASO B] Corresponde a las versiones: 

    LOTUS Freelance Graphics RELEASE 9 for Windows N9.0.9805.2000 
    flg/ltsmkt01.dll version 1.0.0.1 Tamaño 306.176 bytes
    
    LOTUS FastSite RELEASE 1 for Windows N1.0.0.78f
    fastsite/ltsmkt01.dll version 1.0.0.1 Tamaño 306.176 bytes

 En este caso , el archivo es distinto al del caso A, pero estamos
en la misma situacion. Realizamos la misma busqueda que en el caso A,
es decir:

"0F8316000000" y lo reemplazamos por "0F8516000000"
(Aqui solo encontramos una)

Y DESPUES buscamos "2BC8890D" y lo reemplazamos por "9090890D"

Creo que no hace falta que te recuerde el propósito de estos tutoriales. ¿no?

NOTA: Estos tutoriales pueden contener errores intencionados (puede ser que el autor se haya saltado la explicación de algún paso, errores en las direcciones de memoria......etc).
El objetivo es que aprendas a crackear y que tengas ideas propias. ;o)
  
*±±========-*-*-*-* P E R S O N A L   G R E E T Z *-*-*-*-========±±*
    Dasavant, Niabi, r00ster, ZEncrakz, Azrael, Klimpong, Zor       
    Conde-Vampiro, Mac-Crack, Killer_P, ASTAGA, Harvestr, Iczelion    
    JosephCo, Carpathia, Taylor, Tapu, Ivanopulo, EgoistE, Torn@do,     
    JUANDA, Leoworld, ReKiem, Neural_N, Netking, Russ97,
	    Mr.Pink and of course all WKT Members ;o)



*------------------*
|WHISKEY KON TEKILA|
|Mr.WhiTe [WkT!99] |
|http://wkt.tsx.org|
|http://ecd.tsx.org|
*------------------*