WinNT Syscall
-
Ich glaube zwar nicht, dass wer die antwort kennt aber den Versuch ist es trotzdem wert:
Was ich machen muss um einen Syscall unter Windows aufzurufen. Bei
mov eax, 1 int 80hversucht er auf Speicher in 0xFFFFFF zuzugreifen.
-
Dr. Fred schrieb:
mov eax, 1 int 80hder code kommt von freebsd oder diesem bastelsystem linux ne? unter win werden die meisten syscalls mit 'int 2eh' aufgerufen. ich glaube nicht, dass du das 1:1 übernehmen kannst wenn du 80 gegen 2e austauschst
-
opps hab hab 80 statt 2e geschrieben, richtig. Aber eax ist auch unter Windows die Syscall id, da bin ich mir ziemlich sicher, aber jetzt muss man noch irgendwie die Parameter übergeben, aber wie ?
Unter Linux sind das einfach die Register.
-
Habs hinbekommen:
#include <stdio.h> int main( void ) { printf("Calling Syscall...\n"); void* test = NULL; //hate hate hate asm ( "pushl %0 \n" "lea 4(%%esp), %%edx \n" "mov $0x1, %%eax \n" "int $0x2e " ::"r"(test) ); printf("... return from Syscall\n"); getchar(); return 1; }