Hola, soy principiante en esto y tengo el siguiente problema. Estoy utilizando un programa para simular microcontroladores de la familia MCS-51. Se puede utilizar sin registrarse, solo tiene limitaciones en cuanto al tamaño del programa, pero ese no es el problema, cuando arranca aparece una ventanita muy molesta, tienes que apretar el tipico botón "register later" para utilizar el programa. Me gustaria quitar esta ventanita, pero cuando intento abrir el pinnacle con el Ollydbg me sale una ventanita con el siguiente texto:
- File PINNACLE.EXE is probably not a 32-bit portable executable. Try to load anyway?
Le digo que si y se abre el pinnacle pero en el olly no se carga nada. He intentado abrir el pinnacle con el Stud_pe pero me sale: -Invalid format. Not PE/ or DOS file.
Alguien sabe porque pasa esto, saben de otro programa con el que pueda desensamblarlo. Puede que este comprimido con un packer? El programa se ve que es un poco antiguo, la primera vez que lo ejecuté normalmente me salió una ventanita que ponia no se que de VDD. Lo abrí con editor hexadecimal y empieza con los caracteres MZ asi que no se porque me sale que tiene un formato inválido.
El programa es este: http://www.vaultbbs.com/pinnacle
Un saludo.
Gracias.
yo con el olly si lo pude abrir :-\
te dejo la rutina que te interesa, la pego aqui y quien quiera que te ayude. puedes llegar a sacar el keygen.
Sub sub6670()
Dim l0020 As Long
Dim l0028 As String
Dim l002A As Integer
Dim l002C As String
Dim l002E As Long
Dim l0030 As String
Dim l0032 As String
Dim l0034 As Long
Dim l0036 As Long
Dim l0038 As String
Dim l003A As String
Dim l003C As Long
' Const c004C = 1 ' &H1%
Exit Sub
l0020& = Val(txtSerialNumber)
l0028$ = Trim$(UCase$(txtUserName))
For l002A% = 1 To Len(l0028$)
If Mid$(l0028$, l002A%) >= "A" And Mid$(l0028$, l002A%) <= "Z" Then
l002C$ = l002C$ & Mid$(l0028$, l002A%, 1)
l002E& = l002E& + (Asc(Mid$(l0028$, l002A%)) - 48) * Len(l002C$)
l002E& = l002E& Xor l0020&
End If
Next l002A%
l0030$ = Right$("151678" & Trim$(Str$(915141 - l002E&)), 6)
l0032$ = "B"
l0034& = 7
l0036& = 2000
l0036& = l0036& - 1900
l0038$ = Trim$(Str$(l0034& + 10)) & Trim$(Str$(l0036&))
l003A$ = l0030$ & l0032$ & l0038$
l003C& = 0
For l002A% = 1 To Len(l003A$)
l003C& = l003C& + (Asc(Mid$(l003A$, l002A%)) + 7) * l002A%
l003C& = l003C& Xor (Asc(Mid$(l003A$, l002A%)) - 9)
l003C& = l003C& * 2
Next l002A%
txtPassword = l003A$ & "-" & Trim$(Str$(l003C&))
End Sub
el programa esta compilado en vb3.
Lo intenté abrir con otro ordenador con el olly y salió bien. Será el ordenador que es viejo.
Muchas gracias por las respuestas. Otra cosa, como sabes con que esta compilado? Que programa utilizas para saberlo?
Gracias.
pues a sido ciegas, he modificado un byte cerca del nombre de un componente y me a salido el error de las runtime de vb3.
Hola de nuevo. Me podrias decir como lo has hecho para conseguir ese fragmeto de código. Como soy nuevo no conozco muchas herramientas. He encontrado una, SmartCheck, que dicen que va bien para programas hechos en visual basic, pero me da el error de siempre, que el archivo que intento abrir (pinnacle.exe), es un invalid Win32 executable. Ademas he echo algunas pruebas con el olly, me dice que no es un win32 executable, try to load anyway? le digo que si y se abre. Pero cuando lo intento tracear me van saliendo excepciones, asi que pongo en opciones que ignore las excepciones, reinicio, vuelvo a abrir el olly y me sigue saliendo la misma excepcion, esta en concreto: 40000005, así que me gustaria saber como lo has hecho tu para llegar a ese código. No hace falta que lo expliques, solo alguna referencia de como lo haces para llegar hasta ese código para que yo pueda investigar.
Que software me recomiendas para atacar este programa? Porque he oido que el olly para programas en VB no va demasiado bien.
Gracias.
dodi's vb discompiler. mirandolo otra vez ese codigo te genera el codigo despues hay unas comprobaciones mas con otros valores que deberias buscar y tendrias lo que necesitas.
OK. Gracias!!
Hola, me baje el dodis discompiler, pero me da problemas, esto es lo que hago para desensamblar el pinnacle:
-voy al directorio vdis3
-abro el archivo vbdis3e.exe
-se carga todo sin problemas (tengo el VB3 instalado)
-abro el pinnacle.exe con el dodi i me sale: mscom300 not yet register'd
Alguna idea?
Sobre el programa he descubierto que es de 16bits y tiene una cabecera NE, de la cual no he encontrado informacion.
Saben porque me sale eso en el dodi? Tienen o conocen algun manual del dodi? Saben cual es la ultima versión? Saben de otros desensambladores de VB3?
gracias.
un saludo.
Hola.
Otra cosa, saben si después podré modificar el programa desde el microsoft visual basic, si consigo desensamblar sin que me de errores?. Es decir, es possible a partir del *.mak obtenido con el dodi, hacer el *.exe?
-Trim, Mid$,etc, estas palabras son propias del VB3 o del dodi, es decir, para saber lo que quiere decir esto: Mid$(l0028$, l002A%), por ejemplo, que tengo que buscar, información del dodi o de visual basic 3?
-Por lo tanto, si ya he encontrado la rutina donde coje los datos del registro, miro como funciona para hacer un keygen o es posible modificarla para después compilar el exe crakeado? lo digo porque yo desensamblo con errores y cuando intento compilar (make exe file) me sale el error "Expected: end-of-statement", por lo tanto, si no es posible modificar el programa original, me centro en la rutina y ya está, pero si se puede modificar el programa pues lo intentaré modificar, es por eso que me gustaria saber si lo que quiero hacer es posible.
Gracias
Citarpara saber lo que quiere decir esto: Mid$(l0028$, l002A%), por ejemplo, que tengo que buscar, informacion del dodi o de visual basic 3?
l0028$ = Trim$(UCase$(txtUserName))
For l002A% = 1 To Len(l0028$)
l0028$=Nombre de usuario
l002A%=Variable del for, que se incrementara en 1 hasta N caracteres (que tendra el nombre).
con toda la info que te da puedes hacerlo tu en tu codigo tranquilamente. solo tienes que fijarte en que es cada variable. deberias almenos entender el vb para lo que quieres hacer, si no es como si lees el periodico en chino.
Hola de nuevo.
Osea, que el keygen evidentemente se puede hacer, pero modificar el programa no, es así o me equivoco?
gracias.
modificar el programa claro que se puede, pero no desde lo que te muestra el dodi.como toda la vida con un editor hexadecimal sabiendo donde tienes que modificar. pero veo mas sencillo sacarle el codigo ya que la informacion que te da es mucha.
OK, muchas gracias, sin tu ayuda no lo habria conseguido, ahora ya se lo que tengo que hacer.
Un saludo.
Al final ya logré registrarme, os cuento como lo hice. Primero, con vuestra ayuda y la de dodi :) obtuve parte del codigo fuente del programa. La parte interesante está en el archivo register.bas, que genera el dodi cuando descompilas el pinnacle. Abro el archivo con el bloc de notas y copio la parte del código que genera la contraseña, a continuación creo un proyecto con el visual basic y hago un keygen con el código copiado (se puede aprovechar toda la rutina, solo hay que quitar lo que sobra).
Ya tengo mi keygen, lo pruebo y no funciona, supongo que será el serial, ¿cual pongo?. Vuelvo a revisar el archivo register.bas y veo que para comprobar si estás registrado, llama a una funcion externa (extfn02BA). Busco en los archivos generados por dodi y en module1.bas veo que esta función externa llamada vb_vpw está en la libreria pin52dll.dll. Abro esta libreria con el wdasm32, voy a functions>>exports y allí está la función que busco, vb_vpw. Finalmente, voy haciendo pruebas con un editor hexadecimal, cambiando saltos, hasta que quedé registrado.
Pues eso es lo que hice.
Un saludo.