Problema con un programa en Visual Basic

Iniciado por javyer, 5 Febrero 2006, 16:19 PM

0 Miembros y 1 Visitante están viendo este tema.

anjz

Bueno, ya he conseguido desactivar la proteccion de tiempo ;D

He hecho un pequeño manual muy sencillo y paso a paso de como hacerlo
lo podeis descargar aqui:

http://www.geocities.com/anjsweb/5minutos.doc

javyer

Muchas gracias por las molestias amigo. He estado afuera estos días y voy a leer y poner en práctica el manual. Ya te contaré. Saludos.

javyer

#12
He estado siguiendo las instrucciones pero cuando se ejecuta y pasa (creo los 5 min.) aparece el siguiente error en pantalla: "Error "50003" en tiempo de ejecución: Error inesperado". ¿A qué puede deberse?.
También tengo 2 dudas:
- Cuando estamos en la dirección del salto y hacemos doble clic para cambiar la instrucción y cambiamos la instrucción original:  JNZ SHORT Gedo.005221C7  por la nuestra: JMP 005221B1 se me va a la pantalla CPU - main thread. Ahí es cuando tengo que hacer doble click y cambiar esos valores, lo hago, ¿tengo que picar despues en Assemble?. Cuando lo hago las letras son rojas y pone "JMP SHORT Gedo. 005221B1". ¿Tengo después que picar con el botón secundario hacemos Copy to executable > Selection?.
- Cuando dices "... podriamos cambiar jnz por jz así el programa funcionaría justo al revés..." , ¿por qué jz funciona al revés?, ¿de dónde sale eso?. Y por último, ¿por qué al cambiar la dirección se pone JMP XXXXX?, ¿de dónde sale JMP?.
Saludos y gracias.

anjz

Lo voy a mirar mejor, pero lo probé, pasaron los cinco minutos y seguia funcionando, si que noté que al cerrar el programa me tiró un error, pero fue al cerrarlo. De todos modos voy a ver si le busco una mejor solución como registrarlo por ejemplo. Si esque se puede.

Respondiendo a tus preguntas, SI es como tu lo mencionas. Cambias la instruccion y le das a assemble, y entonces tus cambios  salen en color rojo. Mas tarde las instrucciones que hayas cambiado (en este caso solo una) las seleccionas y haces copy to executable > selection y asi de esta manera guardos los cambios en un ejecutable.

Lo de podemos cambiar jnz por jz, es por lo siguiente.

JNZ Significa Jump if Not Zero es decir Salta si No es Cero. Por encima se hace alguna comparación de dos registros y si coinciden pues sería zero y si no coinciden seria not zero. En este caso JNZ SHORT Gedo.005221C7 nos lleva a la direccion 005221C7 si una comparacion que ha hecho algo mas arriba no  coincide. ¿Y que compara? pues no nos importa, asi de simple, el programa evaluara ciertas condiciones y demas, y pondrá ciertos valores en unos registros segun unas condiciones, el caso es que no nos interesa que salte. PERO SI NO ESTA REGISTRADO LO QUE SEA QUE COMPARE PARECE NO COINCIDIR. y por eso caemos en "se te acabo el tiempo".
Por eso si cambiamos jnz por jz. Saltará si es cero (es decir si la comparacion coincide) pero como hemos dicho que al no estar registrado nunca coinciden pues no saltará a la zona mala y nosotros contentos.

No se si te habré aclarado pero vaya, leelo con calma. De todos modos los manuales de ratón para comenzar y aprender de estas cosas son ideales. Si te interesa este tema te los recomiendo.


anjz

Te pongo un ejemplo para que entiendas mejor por que ponemos un jmp.
Voy a asemejar un codigo inventado en español que se supone que sería como el ensamblador.
Lo de que sean esos registros o esos valores me lo he inventado, solo es un ejemplo.

01---> en el registro eax se introduce 1
02---> en el registro ecx se introduce 2
03---> comparame eax con ecx (si coincidiesen seria zero sino seria not zero)
04---> salta si no es zero a la instruccion 45.
05
06
07
.
.
.
45--->LO SIENTO SE ACABO EL TIEMPO.


Si queremos evitar caer en la instruccion 45 podriamos poner en vez de "salta si NO es zero", un "salta si es zero".

O usar un jmp que significa salta por huevos, le da igual lo que haya salido en la comparacion. un jmp es un "salta por narices a la direccion que te indique"

por lo tanto si cambiamos "salta si no es zero a la direccion 45"
y ponemos "salta por narices a la instuccion 05" pues es como si nada pasara por que le dice que salte por narices a la siguiente instruccion. Vamos lo normal, el programa sigue su curso liena a linea en vez de ir a la 45.

Espero haberte aclarado.

javyer

Ok, todo mejor. Esperaré que me digas algo del error. Lo he hecho varias veces tanto con el cambio del registro cómo con la opción de que nunca se agote el tiempo y me da el mismo error. Saludos.

anjz

Pues, la verdad esque la dirección esa que nos apuntamos del W32Dasm no se si es exactamente la dirección de la ventanita esa que dice que se te agotó el tiempo.

Igual está mal partiendo desde esa base.
Ese es el problema que le veo yo. No se como localizar exactamente la instrucción de el mensaje y por tanto la direccion en donde se decide si paso o no paso el tiempo.

Esque en las API que usa no me sale la _vbaend ni tampoco la rtcmsgbox(que es la que se usa para crear mensajes emergentes del estilo al que nos aparece diciendo que se acabó el tiempo).
No se por donde pillarlo.

Pero NO SABE NADIE??? me extraña. Yo esque no se mucho mucho, estoy aprendiendo. A ver si alguién que sepa algo mas sobre aplicaciones en VB se involucra un poquillo  ;)

javyer

Haber si hay suerte y ayuda alguién. Espero noticias tuyas por si encuentras algo, ok?. Saludos

aragorn666

#18
Nada de nada ni idea como principiante que soy no se

aragorn666

#19
.