Elderan
0
Hallo,
ich möchte mich etwas mit Shellcodes beschäftigen, allerdings erhalte ich immer eine Fehlermeldung wenn ich versuche, folgendes Auszuführen.
Also ich habe folgendes Assembler Programm:
Dies gibt in einer Endlosschleife ein A aus (verwende WinXP). Per nasm-Win32 habe ich das Programm kompiliert. Läuft soweit ohne Probleme.
Dann per disassembler, welcher mitgeliefert wurde, lese ich die Bytes aus:
So diese Subroutine würde ich jetzt gerne unter C verwenden und habe folgendes Prog erstellt:
Wenn ich das nun per Dev-C++ kompiliere, erhalte ich immer folgende Meldung:
Muss ich evt. irgendwelche Register im Assembler-Code auf 0, bzw. auf einen bestimmten Wert setzen, damit es funktioniert?
ich möchte mich etwas mit Shellcodes beschäftigen, allerdings erhalte ich immer eine Fehlermeldung wenn ich versuche, folgendes Auszuführen.
Also ich habe folgendes Assembler Programm:
Code:
segment code
start:
mov dl, 'A'
mov ah, 02h
int 21h
jmp start;
Dann per disassembler, welcher mitgeliefert wurde, lese ich die Bytes aus:
Code:
[...]
B241 mov dl,0x41
B402 mov ah,0x2
CD21 int 0x21
EBF8 jmp short 0x40
So diese Subroutine würde ich jetzt gerne unter C verwenden und habe folgendes Prog erstellt:
Code:
#include <stdio.h>
//Mein Shellcode
char code[]= "\xB2\x41\xB4\x02\xCD\x21\xEB\xF8";
int main() {
int (*shell)();
*(int*)&shell = (int)code;
shell();
}
Wenn ich das nun per Dev-C++ kompiliere, erhalte ich immer folgende Meldung:
Code:
Unbehandelte Ausnahme bei 0x00402004 in c_prog.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0xffffffff.
00402000 mov dl,41h
00402002 mov ah,2
00402004 int 21h ;Hier der Fehler
Muss ich evt. irgendwelche Register im Assembler-Code auf 0, bzw. auf einen bestimmten Wert setzen, damit es funktioniert?