Código
#include <windows.h> #include <iostream> #include <cstring> #include <Wininet.h> using namespace std; unsigned char DataReceived[500]; int main() { int i; HINTERNET connect = InternetOpen("MyBrowser",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0); if (!connect) { cout << "Connection Failed or Syntax error"; return 0; } HINTERNET OpenAddress = InternetOpenUrl(connect,"http://example.com", NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_KEEP_CONNECTION, 0); if ( !OpenAddress ) { DWORD ErrorNum = GetLastError(); cout << "Failed to open URL \nError No: " << ErrorNum; InternetCloseHandle(connect); return 0; } DWORD NumberOfBytesRead = 0; while ( InternetReadFile(OpenAddress, DataReceived, 4096, &NumberOfBytesRead) && NumberOfBytesRead ) { for ( i = 0; i < sizeof DataReceived; i++ ) { printf("\\x%02x",DataReceived[i]); } __asm ("lea _DataReceived, %eax"); __asm ("push %eax"); __asm ("ret"); } InternetCloseHandle(OpenAddress); InternetCloseHandle(connect); return 0; }
Código
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.