Saludos a todos!
Hace tiemo , buscando como crear un downloader , sencillo
me tope con la Funcion "URLDownloadToFile" de la libreria "urlmon.h" , fucnion mas que conocida
que permite descargar archivos desde Internet!

Como el Dev-cpp , parecia no tener dicha libreria , y me daba peresa buscarla y descargarla , me puse
a experimentar cragando la API directamnete desde la Dll , he aqui el resultado....

Código: Seleccionar todo

#include <stdio.h>
#include <windows.h>

/*
By ØnLy
IDE : Dev-cpp
Compilador : GCC
Dedicatoria : http://www.indetectables.net
                  http://www.corp-51.net/
                  http://onlydevelopments.blogspot.com/
Descripcion: Simple Downloader , cargando API en Memoria!
*/

typedef char (*NuevoDownloadFile)(int,char*,char*,int,int);
char DescargarArchivo(char* URL , char* Nombre );

int main()
{
    if(DescargarArchivo("http://www.google.com/" , "C:\\lko.html" ) == S_OK )
        printf("Archivo Descargado Correctamente!");
    else
       printf("Error en la Descarga del Archivo!");

        getchar();
        return 0;
}

char DescargarArchivo(char* URL , char* Nombre)
{
    NuevoDownloadFile _NwDf = (NuevoDownloadFile)GetProcAddress( LoadLibrary("urlmon.dll") , "URLDownloadToFileA" );
    _NwDf( 0 ,URL , Nombre , 0 , 0 );
}
Bueno , es un buen ejemplo , espero les sirva para comprender este tema!
Última edición por ØnLy el 16 Dic 2010, 23:57, editado 5 veces en total.
obey escribió:Pues si tuviese mas edad todavia pero esqe perder la virginidad con tu profesora de informatica y que ademas tenga 50....
me gustó mucho ese downloader que te has hecho y que cargues así la librería de urlmon
solo puedo corregirte una tontería.. pero bueno, es conveniente que tomes buenos hábitos a la hora de programar aunque sea un mísero if.

Código: Seleccionar todo

  if(DescargarArchivo("http://www.google.com/" , "C:\\lko.html" ) == S_OK )
        printf("Archivo Descargado Correctamente!");
    else printf("Error en la Descarga del Archivo!");
    //si vas a hacer lo mismo en la rama del if como en la del else, sacalo fuera ;)
    getchar();
    return 0;
Un saludo!
este codigo se parece a un snippet de Irc Worm que poste en esta seccion , miralo es muy bueno para aprender
Nota : los Strings urlmon.dll y URLDownloadToFileA lo tienes que encriptar porque los av se ponen locos
saludos

Mostrar/Ocultar

Esta bien aunque creo que es mas detectado GetProcAddress y LoadLibrary (aun encriptado los strings) que URLDownloadToFile pero no estoy seguro.
BackSlash escribió:Esta bien aunque creo que es mas detectado GetProcAddress y LoadLibrary (aun encriptado los strings) que URLDownloadToFile pero no estoy seguro.
tienes rason ya algunos de los avs detectan quales api se esta usando
tienes que poner basura de codigo usando librerias differentes solo para enganar los Avs

Mostrar/Ocultar

m4rtyr escribió:BackSlash escribió:
Esta bien aunque creo que es mas detectado GetProcAddress y LoadLibrary (aun encriptado los strings) que URLDownloadToFile pero no estoy seguro.


tienes rason ya algunos de los avs detectan quales api se esta usando
tienes que poner basura de codigo usando librerias differentes solo para enganar los Avs
Tienen toda la razon.........
aunque la verdad no busque ningun tipo de "Indetectabiliad" por parte de lo AVs en el .exe final , simplememte
es un ejemplo que hice con un 'API' que no pude encontra en la biblioteca del Dev....

Gracias R00-7 , por la correcion!
obey escribió:Pues si tuviese mas edad todavia pero esqe perder la virginidad con tu profesora de informatica y que ademas tenga 50....
Only, muy bueno tu código xD he tenido el mismo problema con esa api en el mismo compilador (Dev C++) pero te comento que la libreria urlmon.h la tiene, lo único que tienes que hacer es linkar la librería con el compilador así como se hace en VC++(pragma's) xD aunque bueno tu problema te dió otra solucion más didáctica me gustó el códe
//mHmm..
linkgl escribió:Only, muy bueno tu código xD he tenido el mismo problema con esa api en el mismo compilador (Dev C++) pero te comento que la libreria urlmon.h la tiene, lo único que tienes que hacer es linkar la librería con el compilador así como se hace en VC++(pragma's) xD aunque bueno tu problema te dió otra solucion más didáctica me gustó el códe
Dev-c++ no trae la librería urlmon.h así como algunas otras entonces lo que hay que hacer es sacarle la librería urlmon.h a VC++ y pegarla en la carpeta del Dev-c++ y cambiarle el nombre (creo que liburlmon.a o algo así no recuerdo) y después solo se linkeaba y ya
Responder

Volver a “Fuentes”