Se trata de
un ocx escrito en VisualBasic 5 y 6 GRATUITO, para hacer de una
forma sencilla (cierto) y segura (ya veremos) programas
NO gratuitos
para distribuirlos después por ahí. Es todo un detalle del
autor crear dos versiones distintas para ahorrar varios megas de instalables
al sufrido usuario de internet, victima del loco programador de VB creador
de programas 15 megas.
Con el OCX se
pueden crear programas que caduken después de usarlos varias veces,
depués de unos días, con opciones desabilitadas... y todo
con una proteccion aparentemente buena, y con gran sencilled...
Como queria probar
si realmente funcionaba el invento, me decidi a utilizar uno de los ¿5000?
programas que lo usan, pero... sólo encontré el VBCodeLibray,
algo asi como una base de datos con las funciones que más te gusta
usar...
Nuestro objetivo
será conseguir un OCX que nos permita usar los programas que lo
usan para protegerse...
¿¿¿Complicado???, creo que no!!!!
|
Primero vamos a intentar
conocerlo un poco, para eso abrimos el Smartcheck y ejecutamos el VBCodeLibrary...
después de varias horas, sumando una palabra, quitando de alli y
poniendo por el otro lado el programa nos muestra una ventana pidiendo
¿a que no lo adivinas? un pasword..., y claro... simplemente sacamos
la conclusión, que el grueso de la proteccion se encuentra en el
fichero nslock15vb6.ocx, y que como tengamos que hacer otra vez este paso
sería conveniente que aprobechasemos el tiempo contando granos de
arroz, descubriendo la cura para el Sida...
Dejamos de lado el
programa, y miramos directamente todo lo que nos podemos bajar de la página
del creador del OCX, para intentar saber como funciona... y claro abrimos
el Visual Basic para hacer un programa de prueba... y vemos que si antes
tardó tanto en aparecer la ventana no era sólo culpa del
Smartcheck...
Bueno, pensemos, cual
podría ser la mejor solución... para que a demas de quitar
la protección los programas fuesen más rápidos...
ya está!. ¿Que pasaría si hiciesemos un OCX?
que engañase a los programas diciendoles que está registrados...
No se, no creo que funcione, demasiado evidente para un programa que tarda
media hora en realizar los calculos...
Coger el VB y cread
un OCX (ActiveX Control), el principal problema con el que nos encontramos
es saber cuales son todas las funciones que necesitamos para engañar
a los programas... veamos que sorpresas tiene el VB...
En el menñu Project, Project Properties, en la pestaña
Component, marcamos Binary Compatibility, y seleccionamos el OCX que queremos
suplamtar... y generamos el OCX porque ya hizimos la parte más complicada...
Pero ohhh, el VB nos dice que si queremos hacer un OCX igual al que
teniamos antes, tenemos que cambiarle el nombre por: nslock15vb6,
le damos a cancelar, y en la pantalla de antes, pero en la primera pestaña
hacemos lo que nos manda... y volvemos otra vez... y claro, se vuelve a
quejar :((( asi que cambiamos el nombre del control UserControl1 a ActiveLock,
y volvemos a compilar, y dice que no encuentra PropertyPage1, bueno, y
añadimos una pagina de propiedades que se llame PropertyPage1...
y como no... compilamos otra vez... y seguimos añadiendo mas paginas
de propiedades, segun nos va diciendo el VB...
Despues de añadir PropertyPage1, PropertyPage2 y PropertyPage3,
nos dice que falta una función, por lo que cogemos la definición
y la pegamos en el código del UserControl que tenemos y seguimos
compilando... hasta que nos diga que la funcion About es distinta !!y eso
que la acabamos de pegar!!!
El problema se encuentra, en que esta es una función especial,
por lo que tenemos que indicarle al VB que esta es la funcion que se llama
cuando se muestra la ventana de Acerca De, asi en el menu, Tools, Procedure
Atibutes, seleccionamos la función y en Procedure ID le decimos
que es la de Acerca de...
Y seguimos compilando... hasta que al fin se compila... ya está
al fin tenemos un OCX que puede ser reemplazado por el original... pero
para que funcione, tenemos que escribir algún codigo en las funciones,
algo así...
Option Explicit
Property Get Counter() As Long
Counter = 10
End Property
Property Get UsedDays() As Long
UsedDays = 1
End Property
Property Let LiberationKey(ByVal RHS As String)
' Not remove
End Property
Property Get SoftwareCodeLength() As Integer
SoftwareCodeLength = 8
End Property
Property Get LastRunDate() As Date
LastRunDate = DateAdd("d", 30, Date)
End Property
Property Let SoftwareCodeLength(ByVal RHS As Integer)
' Not remove
End Property
Property Get RegisteredUser() As Boolean
RegisteredUser = True
End Property
Property Get SoftwareCode() As String
SoftwareCode = "12345678"
End Property
Property Let SoftwareName(ByVal RHS As String)
' Not remove
End Property
Property Get SoftwareName() As String
SoftwareName = "wkt!"
End Property
Property Let Password(ByVal RHS As String)
' Not remove
End Property
Property Get Password() As String
Password = "12345678"
End Property
Sub About()
MsgBox "This is the Foo ActiveLock!!", vbInformation
End Sub
Property Get LiberationKeyLength() As Integer
LiberationKeyLength = 8
End Property
Property Let LiberationKeyLength(ByVal RHS As Integer)
' Not remove
End Property
Y yata!! como veis al
final lo que parecia una protección tecnicamente muy buena y estudiada
fallaba en la base... por ultimo tened en cuenta, que debeis tener otro
OCX pero que se llame nslock15vb5 para los programas que usen la versión
de VB5 y que tal vez algún programa verifique que el tamaño
de las claves es el correcto, por lo que debereis intentar sacar el tamaño
adecuado, bien por prueba-error o con el Smartcheck o cualquiera otra utilidad
que se os ocurra!
Hasta la proxima,
|