Página 1 de 1

[Source](C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 16 Dic 2010, 21:11
por ØnLy
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!

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 16 Dic 2010, 23:22
por R-007
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!

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 00:10
por m4rtyr
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

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 00:13
por BackSlash
Esta bien aunque creo que es mas detectado GetProcAddress y LoadLibrary (aun encriptado los strings) que URLDownloadToFile pero no estoy seguro.

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 00:18
por m4rtyr
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

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 00:23
por ØnLy
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!

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 05:44
por linkgl
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

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 Dic 2010, 17:53
por BackSlash
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

Re: (C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 18 Dic 2010, 04:32
por linkgl
Yo solo he linkado, no tuve necesidad de copiar la librería de VC++ :S

Re: [Source](C)Downloader[Cargando Api en Memoria] By ØnLy

Publicado: 17 May 2011, 16:28
por k0ws
Disculpen,si revivo el post,pero buenisimo code ØnLy,me ayudo un monto .