[C++] Datei modifizieren



  • Hey, ich habe eine Frage. Wie kann ich den Entry Point eines Programmes auf eine andere Adresse setzen? Ich habe bereichts den Entry Point herausgefunden.

    char* Path = "C:\\lol.exe";
    	LARGE_INTEGER largefilesize;
    
    	HANDLE hwnd = CreateFile(Path, FILE_SHARE_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
    
    	GetFileSizeEx(hwnd, &largefilesize);
    
    	DWORD dwSize;
    	dwSize = (DWORD)largefilesize.QuadPart;
    
    	BYTE* myFile = new BYTE[ dwSize ];
    
    	DWORD dwBytesRead;
    	if(ReadFile(hwnd, (LPVOID)myFile, dwSize, &dwBytesRead, NULL) == TRUE)
    	{
    		cout << "Datei konnte gelesen werden!" << endl;
    	}
    	else
    	{
    		cout << "Fehler beim lesen der Datei!" << endl;
    		return -1;
    	}
    
    	IMAGE_DOS_HEADER* DOSHeader = (IMAGE_DOS_HEADER*)myFile;
    
    	IMAGE_NT_HEADERS* NTHeader = (IMAGE_NT_HEADERS*)(myFile + DOSHeader->e_lfanew);
    
    	IMAGE_OPTIONAL_HEADER Header = NTHeader->OptionalHeader;
    
    	DWORD MyEntryPoint = Header.AddressOfEntryPoint;
    
    	DWORD MyImageBase = Header.ImageBase;
    
    	DWORD MyEntry = MyImageBase + MyEntryPoint;
    
    	cout << "Entry Point ist bei: " << hex << MyEntry << endl;
    

    Wie kann ich aber jetz den Rest des Codes der nach den Entry Point kommt ansehen? Und den Entry Point oder andere modifikationen erstellen?



  • Beschäftige Dich mal mit dem PE-Dateiformat...
    http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx

    ...und natürlich damit, wie man Viren schreibt...


Anmelden zum Antworten