Abuse Melding

Je hebt een klacht over de onderstaande posting:

17-10-2006, 14:23 door Anoniem

Je hebt vast in je objdump al gezien dat je mov ecx,msg werd omgezet naar mov ecx,0x080490a4 Dat laatste is een 32bit adres en dat past dus alleen in een 32bit register. oh vandaar dat wist ik niet want had dat al getest met c en gdb onder linux wat overigens intresant was.Want kon de ascii code van hello nergens terug vinden maar alleen 0x080490a4. Dus heb toen een simpel programmatje geschreven onder c met: #include <stdio.h> int main(){ char msg[] ="hello"; printf(msg); Wat die met gdb weer gaf gdb: push %ebp mov %esp,ebp sub $0x18,esp and $0xffffffff0,esp mov $0x0,eax msub,eax,esp mov 0x8048444,eax mov eax,0xfffffffe8(ebp) mov mov 0x8048448,eax mov ax,0xffffffec(ebp) sub $0xc,esp lea 0xffffffe8(ebp),eax push eax call 0x8048268 add $0x10,esp leave, ret Opvallend is dat dat de a.out hello assembly waar alles 8 bites zijn precies op mov ecx,0x080490a4 na.En in gdb de 8 bytes van a.out in eens verranders zijn in 16 bit en 32 bit regsiters.Dus verbaasde me ...

Beschrijf je klacht (Optioneel):

captcha