Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: gangi en 25 Noviembre 2007, 13:46 pm



Título: desensamblar simulador pinnacl, problema con dodi. SOLUCIONADO
Publicado por: gangi en 25 Noviembre 2007, 13:46 pm
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: Carloswaldo en 25 Noviembre 2007, 18:08 pm
yo con el olly si lo pude abrir :-\


Título: Re: desensamblar simulador pinnacle
Publicado por: byebye en 25 Noviembre 2007, 19:06 pm
te dejo la rutina que te interesa, la pego aqui y quien quiera que te ayude. puedes llegar a sacar el keygen.

Código:
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: gangi en 25 Noviembre 2007, 21:14 pm
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: byebye en 25 Noviembre 2007, 22:24 pm
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: gangi en 26 Noviembre 2007, 20:19 pm
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: byebye en 27 Noviembre 2007, 13:36 pm
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.


Título: Re: desensamblar simulador pinnacle
Publicado por: gangi en 29 Noviembre 2007, 21:46 pm
OK. Gracias!!


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: gangi en 6 Diciembre 2007, 21:50 pm
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.


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: gangi en 9 Diciembre 2007, 20:01 pm
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


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: byebye en 9 Diciembre 2007, 20:22 pm
Citar
para 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.



Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: gangi en 9 Diciembre 2007, 20:25 pm
Hola de nuevo.

Osea, que el keygen evidentemente se puede hacer, pero modificar el programa no, es así o me equivoco?

gracias.


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: byebye en 9 Diciembre 2007, 22:15 pm
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.


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: gangi en 9 Diciembre 2007, 23:41 pm
OK, muchas gracias, sin tu ayuda no lo habria conseguido, ahora ya se lo que tengo que hacer.

Un saludo.


Título: Re: desensamblar simulador pinnacle (problema con dodi)
Publicado por: gangi en 25 Diciembre 2007, 18:47 pm
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.