без драйвера наверное никак... это ж не юникс вам... процесс может переименовать/переместить свой файл, но только в пределах одного логического диска... так можно например переименовать из .exe в .old, зачитать, модифицировать и записать в .exe и потом перезапуститься например...
пример самоудаляющегося файла, если файл может удалить себя, то почему он не может себя редактировать?
Но здесь не файл удаляет сам себя, а мы крутим цикл в стороннем процессе, который ждёт, пока наш процесс завершится, а потом удаляет скриптовый файлик, который сам по себе не исполняемый. Где-то на просторах видел пример самоудаления на NativeAPI, но было это лет 6 назад. Несколько раз интересовался, пытался найти (для автообновления) - не нашёл.
HoShiMin, bat-ник запускает процесс, процесс в тот же bat-ник пишет информацию для коррекции ехе, процесс завершается, bat корректирует ехе и самоликвидируется. Как результат -- откорректированный ехе и никаких явных следов и драйверов... IMHO это то, что требовалось ТС, только он молчит...
Ещё как вариант запуск калькулятора например со скрытм окном, инжект туда кода в ep который бы ждал завершения PID'а родителя, и потом бы редактировал его и перезапускал. Только наверное батник беспалевнее
Код (C++): #include <windows.h> #pragma comment(linker, "-export:CleanupA=_CleanupA@16") extern "C" void CALLBACK CleanupA(HWND, HINSTANCE, PSTR, int) { static MEMORY_BASIC_INFORMATION mbi; VirtualQuery(&mbi, &mbi, sizeof mbi); PVOID module = mbi.AllocationBase; CHAR buf[MAX_PATH]; GetModuleFileName(HMODULE(module), buf, sizeof buf); __asm { lea eax, buf push 0 push 0 push eax push ExitProcess push module push DeleteFile push FreeLibrary ret } } Код (C++): #include <windows.h> int main(int argc, char *argv[]) { char buf[MAX_PATH]; HMODULE module; module = GetModuleHandle(0); GetModuleFileName(module, buf, MAX_PATH); CloseHandle((HANDLE)4); __asm { lea eax, buf push 0 push 0 push eax push ExitProcess push module push DeleteFile push UnmapViewOfFile ret } return 0; } http://blogorama.nerdworks.in/selfdeletingexecutables/
*внезапно* https://wasm.in/blogs/3-metoda-raboty-s-zanjatymi-fajlami.408/ создавайте осмысленные заголовки топиков, пжл