desensamblar simulador pinnacl, problema con dodi. SOLUCIONADO

Iniciado por gangi, 25 Noviembre 2007, 13:46 PM

0 Miembros y 3 Visitantes están viendo este tema.

gangi

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.

Carloswaldo


byebye

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.

gangi

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.

byebye

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.

gangi

#5
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.

byebye

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.


gangi

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.

gangi

#9
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