PDA

Ver la versión completa : Crack de WinWedge



Romily
30-03-2009, 19:46
Amigos:

Alguien pudo con el winWedge?

O en todo caso, si tuvieran algun programa en VB para leer el puerto serial que esta conectada a una balanza y no me funciona con el bendito MSCOMM32.

Gracias por la ayuda.

hystd
30-03-2009, 23:20
Alguien pudo con el winWedge?

No hacemos cracks a particulares...


O en todo caso, si tuvieran algun programa en VB para leer el puerto serial que esta conectada a una balanza y no me funciona con el bendito MSCOMM32.

Utilizar librerías para el manejo de puertos está bien, pero requiere conocer bien la interfaz de funciones que exportan esas librerías, así como las estructuras de datos que se manejan. Eso si, con ellas evitas tener que reescribir código, algo muy importante a tener en cuenta para los diseñadores, a parte de estar más testeado que cualquier nuevo software que podamos desarrollar desde el principio (supuestamte siguiendo estas premisas, debería funcionar y de forma eficiente, lo ya existente, pero no siempre es así :p).

No obstante, por aprender, y por saber que no es difícil realizar un software de pago, podemos realizarlo de forma básica nosotros mismos...

De forma genérica, puedes manejar puertos tal y como si fueran ficheros. Recuerda que un fichero es el mecanismo que tiene una aplicación de comunicarse con el hardware. En un contexto u otro el fichero será una cosa u otra... Por ejemplo, un fichero para almacenar información en disco es el conocemos tradicionalmente cuando hacemos referencia a un "fichero", pero también puede ser un fichero, el recurso compartido para comunicar dos sistemas distribuidos, en tal caso el fichero se llama "socket"... del mismo modo un fichero también puede ser el recurso compartido entre una aplicación y el hardware, en tal caso se denomina "driver", etc...

Por tanto, para manejar un fichero bajo Windows, puedes usar las funciones básicas de la API WIN32 para la apertura, cierre, lectura y escritura: CreateFile (http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx), CloseHandle (http://msdn.microsoft.com/en-us/library/ms724211(VS.85).aspx), ReadFile (http://msdn.microsoft.com/en-us/library/aa365467(VS.85).aspx), WriteFile (http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx) respectivamente.

Para el caso concreto de manejar puertos, cuando llamas a CreateFile, le pasas como primer argumento el nombre del "fichero", que se corresponde con el nombre que utiliza el driver en su rutina AddDevice(). En dicha rutina el diseñador del driver puede optar por la forma en que se identificará el dispositivo, que puede ser mediante un nombre o un identificador global único (GUID). En el caso del puerto serie, puesto que el driver ya fue diseñado por Microsoft, ya lo incorpora Windows, y el nombre exportado es ("\\\\.\\COM1"), si se trata del puerto COM1, evidentemente :). El segundo parámetro de CreateFile, es una constante o una operación lógica de éstas para definir el tipo de acceso que tendrá la aplicación a dicho recurso (fichero). Windows exporta unas constantes para la legibilidad de software: GENERIC_READ, GENERIC_WRITE, o ambas: (GENERIC_READ or GENERIC_WRITE) si es con permiso de lectura/escritura, que será probablemente el que utilices. Los siguientes parámetros son para indicar atributos de compartición, seguridad, etc... Lee los enlaces que he puesto a todas las funciones de la API para mayor referencia (no voy a hacer una miniguia/traducción ahora)

Una vez abierto el "fichero" (o driver), la función nos devuelve un handle o manejador para poder hacer cosas con él (lecturas, escrituras, cierre, etc...), usando como comenté antes, ReadFile, WriteFile, CloseHandle, entre otras...

Lo único que resta saber son los procolos que se van utilizar cuando se trate de un periférico específico... Al ser una transmisión serie, se debe especificar por ejemplo velocidad de transmisión (que la marcará el propio dispositivo conectado), longitud de los datos que se van a leer/escribir (dependerá del tamaño del registro de datos del periférico, normalmente un registro de desplazamiento para ir desplazando bit a bit el dato recibido), comprobación de errores (por ejemplo CRC, paridad, etc...), etc... Normalmente suele ser una UART incorporada en el dispositivo la que suele definir todos estos parámetros.

Una vez definida la configuración (impuesta por las capacidades del dispositivo), debes actualizar el estado del puerto, especificando dicha configuración. Puedes utilizar una estructura de datos especial (incorporada por la API de Windows), denominada DCB (http://msdn.microsoft.com/en-us/library/aa363214(VS.85).aspx). Una vez instanciada esa estructura con los valores específicos a la configuración, puedes usar la funcion SetCommState (http://msdn.microsoft.com/en-us/library/aa363436(VS.85).aspx) para hacer efectivos los cambios.

Y algunas cosillas más...

Si estás interesado en desarrollar una aplicación para el manejo del puerto serie, echa un vistazo a todo lo que te he comentado y si tienes dudas sobre cómo implementar algo postea.

Un saludo.