Bonjour,
J'essayes de coder un shellcode en assembleur lancant la calculatrice en utilisant l'appel winexec.
En déboggant sous ollydbg je recois une erreur de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 section text global _main _main: xor ecx, ecx xor ebx, ebx xor eax, eax jmp getcalc ret: pop ebx mov [ebx + 0x1C], cl mov eax, 0x7C862AED ; WinExec address push ebx ; file to open call eax ret getcalc: call ret calc db 'c:\windows\system32\calc.exeA'
lors du remplacement du caractère A (qui est bien situé à l'adresse 0x00402037) dans ma chaine (mov [ebx + 0x1C], cl).Access violation when writing to [00402037]
Pour information je suis sous Windows XP SP3 et je compile mon programme de la facon suivante:
Est ce que quelqu'un peut m'expliquer pourquoi cette instruction provoque un access violation et comment éviter que cela se produise ?nasm -f win32 -o prog.o prog.asm
gcc -o prog.exe prog.o
En vous remerciant par avance.
Partager