Anwendung soll sich selber löschen
-
Hallo Forum,
zu dieser Thematik habe ich den Thread in der WinApi FAQ gelesen.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39360.htmlDort wurde dieser Codeschnipsel vorgestellt:
#include <windows.h> int main(int argc, char *argv[]) { HMODULE module = GetModuleHandle(0); CHAR buf[MAX_PATH]; GetModuleFileName(module, buf, sizeof buf); CloseHandle(HANDLE(4)); __asm { lea eax, buf push 0 push 0 push eax push ExitProcess push module push DeleteFile push UnmapViewOfFile ret } return 0; }Ich habe nun versucht ihn in AT&T Assembler Syntax für den GCC unter dem MinGW Studio zu bringen:
#include <windows.h> int main(int argc, char *argv[]) { HMODULE module = GetModuleHandle(0); CHAR buf[MAX_PATH]; GetModuleFileName(module, buf, sizeof buf); CloseHandle(HANDLE(4)); __asm__ ("lea %eax, buf\n\t" "push 0\n\t" "push 0\n\t" "push %eax\n\t" "push ExitProcess\n\t" "push module\n\t" "push DeleteFile\n\t" "push UnmapViewOfFile\n\t" "ret"); return 0; }Er meldet dann natürlich "undefined reference to `ExitProcess'", ...
In einem anderen Thread wurde geschrieben das man nur eine Compileroption ("-masm=intel") setzen bräuchte um Intel Assembler Syntax zu benutzen. Das funktioniert bei mir aber nicht. http://www.c-plusplus.net/forum/viewtopic-var-t-is-41479.htmlWie packe ich die Adresse von ExitProcess? Oder kann ich irgendwie den Intel ASM im MinGW Studio benutzen?
Vielen Dank
Flippy
-
-
Vielen Dank

-
Als Tipp würde ich sagen, dass die Methode mit der Batchdatei am sichersten und einfachsten ist. Aber das steht ja auch alles hier im FAQ
