Autor
|
Tema: Evitar mensajes de error (Leído 5,065 veces)
|
nhaalclkiemr
Desconectado
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
Me gustaría saber si es posible evitar los mensajes de error por falta de archivos en VB6.0 No me refiero a evitar internamente los errores del programa usando por ejemplo "On error ...", me refiero a evitar el mensaje de error k salta si faltan controles ocx que usa nuestro programa, o la librería indispensable en VB6.0 que no me acuerdo como se llamaba. Lo k me gustaría es k en caso de error se saliera y punto sin mostrar nada...es por un troyano k estoy haciendo, si a la victima le falta algun componente mejor k no salga un error (aunke no funcione el troyano) k k le aparezca un mensaje saludos
|
|
|
En línea
|
StasFodidoCrypter 1.0 - 100% (old) | StasFodidoCrypter 2.0 - 85% (deserted) | Fire AV/FW-Killer - 97% (deserted) | R-WlanXDecrypter 1.0- 100% |
|
|
|
ActiveSheet
Desconectado
Mensajes: 389
Feeling Jazz
|
Por que no simplemente Bineas la libreria que utiliza
|
|
|
En línea
|
|
|
|
karmany
|
El problema es que las librerías las carga el programa antes de llegar al OEP, para entenderlo: antes de ejecutar tu código fuente. Esa información, no me quiero meter mucho en el tema, está guardada en el PE header y el programa carga las librerías que necesite y además tiene puestas ahí las que necesita.. Por ej. en el caso de VB necesita la MSVBVM60.dll y la carga lógicamente antes de llegar al OEP.
Me parece un tema interesante...
Una cosa que se me ocurre que puedes hacer y te funcionará es modificar la IMAGE IMPORT DESCRIPTOR (para que entiendas esta zona a grandes rasgos: dice qué librerías se van a cargar al comienzo del programa), y dejar lo indispensable para que funcione y después a partir del OEP, pues cargar las otras librerías con LoadLibrary y ya sabes si están o no. Con esto tienes un problema si quieres hacerlo en VB: que VB para funcionar necesita obligatoriamente su librería: MSVBM60.dll y por este motivo no te dejará hacer nada sin ella. Modificando un programa en VB con ensamblador yo creo (sería cuestión de intentarlo) que sí sabría hacer lo que dices. De todos modos me surge la duda de si por ejemplo quito la librería de VB, si luego al hacer LoadLibrary se cargarán correctamente todas sus funciones con las direcciones correctas... no sé tal vez tenga su complicación. Si sabes ensamblador te puedo orientar...
PD. Esto q acabo de explicar es mi idea, tal vez he pasado por alto algo elemental... quién sabe...
Un saludo
|
|
« Última modificación: 28 Julio 2007, 00:01 am por karmany »
|
En línea
|
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
Weno, en el caso de la librería MSVBVM60.dll puede que sea más dificil, pero la verdad a mi me importaría más k faltaran componentes OCX, es bastante común... Ya me imaginaba que para MSVBVM60.dll se necesitaría añadir algo en ensamblador, pork sin esa librería el programa no se carga. Lo k dices parece buena idea pero la verdad no se como hacerlo...sería lo mismo para evitar errorespor falta de componentes OCX??? No me importa k el programa no funcione, solo k en caso de faltar alguna librería no de un mensaje de error. Yo a veces lo k hago es crear un archivo SFX que descomprime el ejecutable y en caso de no existir alguna librería, la copia, lo malo es k se añade el peso de las librerías al programa... Saludos
|
|
|
En línea
|
StasFodidoCrypter 1.0 - 100% (old) | StasFodidoCrypter 2.0 - 85% (deserted) | Fire AV/FW-Killer - 97% (deserted) | R-WlanXDecrypter 1.0- 100% |
|
|
|
karmany
|
Estoy echando un vistazo...
Acabo de comprobar que carga los OCX (o por lo menos en mi caso) después de llegar al OEP. El mensaje que sale es un MessageBeep.. Voy a mirarlo bien y a ver si se pudiera hacer desde VB, para no modificarlo con ensamblador..
Un saludo
|
|
|
En línea
|
|
|
|
karmany
|
He encontrado esta forma para los OCX. Yo lo he hecho como ejemplo simple para saber si el OCX está en el directorio del programa. Tú ya lo haces a tu manera.. Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long) Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Form_Initialize() Dim archivo As String archivo = "C:\VBbotones.ocx" If Dir(archivo) = "" Then MsgBox "El ocx no existe y ahora va a finalizar el programa" ExitProcess GetExitCodeProcess(GetCurrentProcess, 0) End If End Sub Espero te sirva
|
|
|
En línea
|
|
|
|
wACtOr
Desconectado
Mensajes: 461
Premio finalista diseño web elhacker.net
|
pero el ejemplo que as puesto lo que hace es cargar el codigo fuente y comprobar si existe, pero si no existe esa libreria, el codgio no se va a ejecutar, con lo que estamos en las mismas. nhaalclkiemr , si lo quieres solo para el control winsock, te paso los modulos csocketmaster, que reemplazan el control mswinsk.ocx, con lo que dejarias de tener esa dependecia con ese ocx. creo, que alguien me corrija si estoy ekivokado, que cualquier ocx puede ser reemplazada con llamadas a la API, como es el caso del csocketmaster.
|
|
|
En línea
|
|
|
|
d(-_-)b
|
esacto gustamente eso, es mejor utilizar el csocketmaster, para no tener que depender del winsock
Saludos...
|
|
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
Nunca usé eso del csocketmaster. El funcionamiento es similar al control winsock???
|
|
|
En línea
|
StasFodidoCrypter 1.0 - 100% (old) | StasFodidoCrypter 2.0 - 85% (deserted) | Fire AV/FW-Killer - 97% (deserted) | R-WlanXDecrypter 1.0- 100% |
|
|
|
karmany
|
Yo he hecho ese ejemplo porque nhaalclkiemr dijo al principio: "Lo k me gustaría es k en caso de error se saliera y punto sin mostrar nada"
Efectivamente, como dices wACtOr, también se puede emular ese ocx. Además hay muchos código fuente de ocx que puedes incorporar. Estoy de acuerdo en que si se puede emular el ocx mejor que mejor, pero vamos, yo le entendí que si no existe el ocx que el programa finalizara.
un saludo
|
|
|
En línea
|
|
|
|
|
|