exe in exe ausgeben
-
hallo,
ich habe mal eine Frage.
Ich habe eine exe als Ressource eingebunden.
Wie kann ich diese jetzt ausgeben? Da gab es doch schon mal so nen Thread weiß noch einer den link? danke
-
Du schreibst die EXE auf Festplatte und startest sie...
-
wie schreibe ich sie auf die Festplatte??
-
mit CreateFile
-
ich habe das hier im Forum gefunden und so aufgerufen:
bool ExtractReSrcFile(const TCHAR* pszType, WORD wReSrcID, const TCHAR* pszLocation, HINSTANCE hInst) { if(pszType == NULL || pszLocation == NULL) return (false); HRSRC hSrcFile = FindResource(hInst, MAKEINTRESOURCE(wReSrcID), pszType); if(hSrcFile != NULL) { HGLOBAL hSrcFileLoad = LoadResource(hInst, hSrcFile); void* pvSrcFileData = LockResource(hSrcFileLoad); size_t stSrcFileSize = SizeofResource(hInst, hSrcFile); HANDLE hReSrcFile = CreateFile(pszLocation, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hReSrcFile == INVALID_HANDLE_VALUE) return (false); WriteFile(hReSrcFile, pvSrcFileData, stSrcFileSize, NULL, NULL); CloseHandle(hReSrcFile); return (true); } return (false); }ExtractReSrcFile(TEXT("exe"), IDR_EXE1, TEXT("exename.exe"));die Datei habe ich als Ressource hinzugefügt unter dem ordner "exe"
Es funktionert, also ich sehe die Datei nur gleich nachdem die Datei da ist stürzt das programm ab. Es muss in der nähe von WriteFile und CloseHandle sein sagt der Debugger. Woran liegt das?
-
ist echt wichtig es passiert in WriteFile
-
Rückgabewerte + GetLastError.
-
pNumberOfBytesWritten [out, optional] A pointer to the variable that receives the number of bytes written when using a synchronous hFile parameter. WriteFile sets this value to zero before doing any work or error checking. Use NULL for this parameter if this is an asynchronous operation to avoid potentially erroneous results. This parameter can be NULL only when the lpOverlapped parameter is not NULL. For more information, see the Remarks section.Jetzt kannst du dein virus oder dein wasauchimmer fertig machen
-
Hallo.
Jede exe hat ihren eigenen Addressraum. In jedem Addressraum darf nur eine exe sein. CreateProcess()?
Gruß
Lars