elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 08:30  


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [VB6] ¿Cómo uso mZombieInvoke?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [VB6] ¿Cómo uso mZombieInvoke?  (Leído 1,418 veces)
STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
[VB6] ¿Cómo uso mZombieInvoke?
« en: 24 Enero 2012, 01:52 »

Ejemplo cualquiera para practicar el uso de Kinvoke; codigo normal con la API declarada
Código
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
 
 
private sub form_load()
 
Call ShellExecute(0, "Open", App.Path & "\UPX.exe", App.Path & "\comprimeme.exe", vbNullString, 0)
 
end sub

Exactamento lo mismo pero sin la api declarada (NO ME FUNCIONA):
Código
        Invoke "KERNEL32", "ShellExecuteA", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), strptr(App.Path & "\comprimeme.exe"), vbNullstring, 0
 


¿Cuál es el procedimiento, los pasos que tengo que realizar para pasar de mi función con la API declarada a una con Kinvoke?

Muchas Muchas gracias

Edit: estoy usando el módulo que aquí se detalla: http://cobein.com/wp/?p=567


« Última modificación: 24 Enero 2012, 02:08 por STARZ » En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #1 en: 24 Enero 2012, 02:32 »

pasas cadenas unicode a una api de formato ascii proba con las API ShellExecuteW o converti la cadena a ascii


En línea
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #2 en: 24 Enero 2012, 04:16 »

Como dice RHL: ShellExecuteW
En línea

STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #3 en: 24 Enero 2012, 04:46 »

Ninguno me funciona. ¿Qué estoy haciendo mal?
Código
Call Invoke("KERNEL32", "ShellExecutExW", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), vbNullString, 0)
 
Call Invoke("KERNEL32", "ShellExecutExA", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), vbNullString, 0)
 
Call Invoke("KERNEL32", "ShellExecuteA", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), vbNullString, 0)
 
Call Invoke("KERNEL32", "ShellExecuteW", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), vbNullString, 0)
 
Call Invoke("KERNEL32", "ShellExecute", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), vbNullString, 0)
 


Edit: no se si sirva pero lo estoy probando en WIN7 x86 SP1
« Última modificación: 24 Enero 2012, 04:53 por STARZ » En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #4 en: 24 Enero 2012, 05:48 »

Hay otros dos errores, esa api que quieres usar no es exportada de kernel32 es de shell32
tambien debes de pasarle el puntero a vbnullstring en las cadenas siempre pasar los punteros
En línea
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #5 en: 24 Enero 2012, 05:56 »

En lugar de usar vbNullString, usar 0 directamente
En línea

STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #6 en: 24 Enero 2012, 08:21 »

Código:
Invoke "USER32", "ShellExecuteW", 0, StrPtr("Open"), StrPtr(App.Path & "\UPX.exe"), StrPtr(App.Path & "\comprimeme.exe"), 0, 0

Tampoco funciona, pero no tira ningún error,supongo que eso significa que SellExecuteW le corresponde a USER32.dll

En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #7 en: 24 Enero 2012, 08:37 »

Pero es que es increíble, sos necio o que  :¬¬
si te referis a ShellExecute es exportada de shell32
porque yo no conozco ninguna que se exportada de ninguna libreria que se llame SellExecuteW
En línea
STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #8 en: 24 Enero 2012, 08:47 »

Perdón por el doble mensaje. En el comentario anterior probé con SHELL32 como me decís vos más arriba, cuando tipee a mano me confundí y tipee USER32.

Sigue sin funcionar con el vbnulltring cammbiado por 0
« Última modificación: 24 Enero 2012, 08:49 por STARZ » En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #9 en: 24 Enero 2012, 08:56 »

ok... Aqui hay un ejemplo:
Código:
Invoke "SHELL32", "ShellExecuteW", 0, 0, StrPtr("C:/windows/system32/calc.exe"), 0, 0, 0
y copia y pega todo el modulo de karcrack

sino es porque algunas invocaciones de los parametros de los demas programas estan malas, proba con ese ejemplo que te deje
y si funciona y todo es por los parametros que se le pasan a los otros programas me imagino que no hacen lo que esperas o
no hacen nada

API ANSI:

Código:
Dim MYANSI() As Byte
MYANSI = StrConv("C:/windows/system32/calc.exe", vbFromUnicode)
Invoke "SHELL32", "ShellExecuteA", 0, 0, VarPtr(MYANSI(0)), 0, 0, 0
« Última modificación: 24 Enero 2012, 09:10 por RHL » En línea
STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #10 en: 24 Enero 2012, 09:08 »

Si, el problema estaba en el UPX. El code que pusiste anda perfecto.
Ya aprendí: probar con cal.exe notepad.exe
Ultima pregunta: ¿cómo inferiste que esa API era de SHELL32 y no a KERNEL32?; si yo agarro otra api, ¿como me doy cuenta cual dll que pide?

Código
Invoke "SHELL32", "ShellExecuteW", 0, StrPtr("Open"), StrPtr(App.Path & "\programa.exe"), StrPtr("-c -d"), 0, 0 '-c y -d son atributos

Edit: acabo de ver tu edit, gracias por el ejemplo ansi, aunque no me gusta eso de andar convirtiendo a bytes.
« Última modificación: 24 Enero 2012, 09:14 por STARZ » En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #11 en: 24 Enero 2012, 09:13 »

en la MSDN dice:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

O sino podes bajar un programa que se llama api guide, ahí se aprende mucho
En línea
STARZ

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #12 en: 24 Enero 2012, 09:28 »

Muchas gracias RHL por ayudarme y enseñarma, estoy practicando con muchas APIS y me va de lujo.  :)  ;-)
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #13 en: 24 Enero 2012, 10:09 »

.
Revisa la MSDN para saber que el nombre de la libreria adecuando a tratar en la llamada.

* No te recomiendo usar strptr("algo"), ya que es una mala practica en todo sentido.

Dulces Lunas
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [VB6] ¿Cómo uso mZombieInvoke?
« Respuesta #14 en: 24 Enero 2012, 19:01 »

@BlackZeroX: Lo dices por que la cadena se crea al vuelo para la llamada y puede que ese puntero más tarde no exista?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines