64,654
社区成员
发帖
与我相关
我的任务
分享
;如下栈寄存器EBP的值为ebp
char *p = "123456789";
mov dword ptr [ebp-4],offset string "123456789" (00431098) ; char *p ="123456789", p的值为0x431098, p的地址为0x0012ff7C
00401273 lea eax,0x0012ff74 ;a的地址, 我将地址替换了[ebp-0Ch], 方便看
004012A6 lea ecx,0x0012ff6c ;b的地址, 我用地址替换了[ebp-14h]
;好了,交代完场景,strcpy来了。
;strcpy从0x12ff74开始,复制了10个字节(包含0),strcpy完之后,‘\0’ 的位置是在12FF7D。
;此时,注意看,p变量的首地址已经被覆盖了,被覆盖了2字节。哈哈,以后的东西不写了。好累的。
strcpy(a,p); //越界,之后的代码都不可靠了