elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Llamadas a ASM desde C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Llamadas a ASM desde C  (Leído 4,509 veces)
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Llamadas a ASM desde C
« en: 10 Marzo 2013, 17:22 pm »

Hola a todos,

Tengo una DLL creada en FASM y llamo a las funciones desde C pero me devuelve un error 0xC0000005 mi aplicacion y se cierra.

Para llamarla desde C lo ago así:

Código
  1. typedef (WINAPI * DLLCargada) (DWORD sock);
  2. DLLCargada ShellDLLCargada;
  3. ShellDLLCargada = (DLLCargada)GetProcAddress(Shell,"DLLCargada");
  4. ShellDLLCargada(sock);

y las funciones en la DLL están hechas así:

Código
  1. DLLCargada:    ; parametro sock
  2.             ; informamos que la DLL esta cargada correctamente.
  3.             push ebp
  4.             mov ebp,esp
  5.             mov eax,dword[esp+8]
  6.  
  7.             invoke send,eax,CargadaOk,20,0
  8.  
  9.             leave
  10.             ret    

La aplicación me peta y nose porque creo que es por la pila que no la arreglo bien o algo  desde el ASM :-\ ayuda  :P

un saludo!


En línea

Un byte a la izquierda.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #1 en: 10 Marzo 2013, 19:04 pm »

Código
  1. ret 4


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #2 en: 10 Marzo 2013, 19:28 pm »

Hola EI, gracias por responder.

La aplicación sigue dando el mismo error...

Código
  1. DLLCargada:    ; parametro sock
  2.             ; informamos que la DLL esta cargada correctamente.
  3.             push ebp
  4.             mov ebp,esp
  5.  
  6.  
  7.             invoke LoadLibraryA,mKernel32       ; cargamos las librerias
  8.             mov [Kernel32],eax
  9.  
  10.             invoke LoadLibraryA,mWinsock
  11.             mov [Winsock],eax
  12.  
  13.  
  14.             stdcall mGetProc,[Winsock],hsend
  15.             ; EAX = send@winsock
  16.  
  17.             mov edx,dword[esp+8]
  18.             stdcall eax,edx,CargadaOk,20,0  ;invoke send,edx,CargadaOk,20,0
  19.  
  20.             leave
  21.             ret 4  

En la función mGetProc hago ret 8 tambien y nada... estoy ya un poco desesperado  :xD
« Última modificación: 10 Marzo 2013, 19:31 pm por mDrinky » En línea

Un byte a la izquierda.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #3 en: 10 Marzo 2013, 19:59 pm »

Bueno ese codigo ya es bastante diferente, depuralo linea por linea ya que ahora no hay forma de que lo haga yo sin tener que esforzarme (no se bien que hace mGetProc y sinceramente no tengo ganas de crear todo el codigo necesario en FASM).

EDITO: llamando a GetProcAddress funciona bien, siempre que hsend sea una cadena con send como texto claro ...
« Última modificación: 10 Marzo 2013, 20:11 pm por Eternal Idol 7D » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #4 en: 10 Marzo 2013, 20:27 pm »

mGetProc retorna la dirección de una API pasandole la librería y un hash de la cadena de la funcion.

Solo explota cuando lo lamo desde C si genero un exe con el mismo código ASM y llamo a las funciones no explota, creo que es por las convenciones de llamada o algo pero no acabo de atinar  :-X

En línea

Un byte a la izquierda.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #5 en: 10 Marzo 2013, 21:10 pm »

Depuralo con WinDbg (en teoria estas usando stdcall en ambos lados), asi sabras exactamente cual es el problema, siempre es mas rapido para resolver un problema conocerlo.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Llamadas a ASM desde C
« Respuesta #6 en: 12 Marzo 2013, 16:30 pm »

con el primer codigo si eliminas el winapi de la declaracion tiene que solucionarse el error de la convencion de llamadas

Saludos
En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #7 en: 13 Marzo 2013, 12:05 pm »

Ya solucione el problema, era porque rompia registros que no podia tocar con la convencion de llamada stdcall. Gracias EI jaja  ;)




En línea

Un byte a la izquierda.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Llamadas a ASM desde C
« Respuesta #8 en: 13 Marzo 2013, 13:50 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
llamadas desde perl a java
Scripting
oihantze 0 1,914 Último mensaje 28 Junio 2009, 22:30 pm
por oihantze
Ver SMS o registro de llamadas desde la memory card
Android
extreme69 0 2,302 Último mensaje 11 Enero 2013, 00:34 am
por extreme69
Las llamadas accidentales desde tu bolsillo no son privadas, según corte
Noticias
wolfbcn 0 974 Último mensaje 28 Julio 2015, 14:21 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines