Access violation during writing
Bonjour,
J'essayes de coder un shellcode en assembleur lancant la calculatrice en utilisant l'appel winexec.
Code:
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' |
En déboggant sous ollydbg je recois une erreur de type :
Citation:
Access violation when writing to [00402037]
lors du remplacement du caractère A (qui est bien situé à l'adresse 0x00402037) dans ma chaine (mov [ebx + 0x1C], cl).
Pour information je suis sous Windows XP SP3 et je compile mon programme de la facon suivante:
Citation:
nasm -f win32 -o prog.o prog.asm
gcc -o prog.exe prog.o
Est ce que quelqu'un peut m'expliquer pourquoi cette instruction provoque un access violation et comment éviter que cela se produise ?
En vous remerciant par avance.