| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Shellcode: Zugriffsverletzung im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo, ich möchte mich etwas mit Shellcodes beschäftigen, allerdings erhalte ich immer eine Fehlermeldung wenn ich versuche, folgendes Auszuführen. ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Anzeige 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: 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 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();
} 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? |
| | |
| | #2 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Zitat:
Denn "int 21" sieht mir stark nach DOSe aus. Wenn Dein C-Programm aber als win32 Programm läuft und dann versucht INT 21 auszuführen (was es dabei genau unter Windows bewirkt - k.A,), kommt es zu Fehlern. Da muss schon ein wenig getrickst werden - falls z.B das Zielprogramm solche Ausgaberoutinen enthält, könnten diese genutzt werden (Stichworte wären: Imports, Import Adress Table usw. je nach dem wie tief Du da einsteigen willst). Was noch nützlich sein könnte: kleinere Shellcodes kann man auch in OllyDbg schreiben. Diese können direkt kopiert und eingefügt werden (Rechtklick, "binary->binary copy"). Falls es Bugs gibt (bzw das Programm, in welches Code injeziert wurde, nicht das macht, was man möchte) kann man seinen Shellcode mit EBFE (Endlosschleife) beginnen. Wenn das Programm mit der Ausführung des Shellcodes beginnt bleibt es hängen (eine Hyperthreading CPU könnte hier von Vorteil sein ) und kann in Ruhe mit einem Debugger attached werden wobei der Debugger dann auf dem EBFE stehn bleibt und man dann in Ruhe den ganzen Ablauf verfolgen kann.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Download-zugriffsverletzung bei Vista | Darkholylein | Windows Vista | 2 | 17.10.08 11:27 |
| Zugriffsverletzung - Delphi | jemo. | Code Kitchen | 0 | 15.10.08 17:59 |
| C++ Builder 6: Zugriffsverletzung | benediktibk | Code Kitchen | 0 | 11.01.08 21:22 |
| C: ANSI fscanf() verursacht Zugriffsverletzung | caspar | Code Kitchen | 4 | 22.10.05 17:39 |
| Shellcode | KDSBest | Code Kitchen | 3 | 24.12.03 13:25 |