Eliminar u ocultar msgbox de una .dll

Iniciado por matyarroba@hotmail.com, 6 Marzo 2011, 05:12 AM

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

matyarroba@hotmail.com

Hola soy nuevo en el foro y me uni para aprender más sobre ciertos temas. En esta ocasion tuve problemas con un programa en vb que estuve haciendo en el cual utilizo una libreria que no es de mi propiedad por lo que no tengo el codigo fuente. Esta libreria contiene un msgbox muy molesto que quisiera poder eliminar. Se que con el ollydbg se puede hacer pero no se como apenas pude borrarle el texto que contiene. Agradeceria mucho un poco de ayuda. Saludos!

karmany

Para saber de dónde es llamado el mesagebox en la librería, depura el programa y ponle un breakpoint en la funcion: MessaBoxA o MessageBoxExA.
Entonces ya sabrás de dónde es llamado y si puedes o no evitarlo. Si no es una condición podrás eliminarlo sin problema. Si el programa no está empacado o protegido tiene que ser algo sencillo.

matyarroba@hotmail.com

Muchas gracias por la respuesta, pero te pediria que si es posible me expliques un poco más detallado esos pasos porque la verdad no se como hacerlo, por empezar yo directamente abria la libreria para modificarla pero por lo que me dices es al programa al que hay que abrir con el ollydbg así que creo que ya comence mal. El programa lo compile yo mismo y la dll por lo que se no esta protegida ni empaquetada, pero tampoco se como saberlo con certeza. El messagebox, en realidad son dos, uno solo indica que la operacion fue exitosa con un boton de aceptar nada más y el otro igual diciendo que no se pudo completar la accion solicitada. Si pudieras darme una mano te estaria muy agredecido.

tena

Tambien puedes usar Smartcheck y te dara el offset del messagebox, luego con este te vas al ollydbg y lo modificas como te convenga.

karmany

Es muy sencillo.
Carga tu programa en OllyDBG 1.10, pulsa Ctr+G e introduce: MessageBoxA
Pon un Breakpoint ahí(F2).

Ejecuta tu programa y haz que salte el messagebox y que pare en el BP que has puesto. Verás en la pila de dónde es llamado el messagebox y tiene que volver a la dll que comentas. Para eliminar el messagebox es muy sencillo: ve al código de la dll de donde es llamado el msgbox(mira el retorno de la función en la pila), elimina los push que se hayan introducido en la pila y la llamada a la función. Y ya está. Si no quieres eliminar los push devuelve a la pila a su estado para que no tengas ningún problema.

matyarroba@hotmail.com

#5
Hice lo que me dijiste pero una vez que hago saltar el cartel no se como llegar hasta el breakpoint que marque ni donde ver la direccion de donde es llamado para buscarla y editarla. Segui un tutorial tuyo para eliminar el mensaje demo que sale en .ocx pagas y logre hacer desaparecer los msgbox pero en ambos casos son llamados por el mismo evento click_comand que antes de mostrar el cartel correspondiente realiza un monton de tareas y luego del cartel realiza 2 tareas más. Cuando elimine los msgbox inmediatamente despues me tiraba un error en ejecucion y me cerraba el programa, aunque realizaba todas las acciones que debia. No se si eso será un incoveniente mayor o aún se pueden quitar los mensajes sin que ocurra esto. Gracias por la ayuda seguire intentando.

tena

Ese error es porque no nopeaste los push que te comento karmany, y que estan antes del messagebox. Si tienes suerte (no es demo) quizas hasta haya un salto que evita el mensaje, modificas el salto por JMP y listo.