我需要在哪里制作堆栈粉碎点?

时间:2015-02-02 23:25:08

标签: c stack stack-smash

我正在尝试堆叠粉碎程序,以便直接跳转到返回,绕过正确密码(schoolwork)的需要。如果密码[8]在它的缓冲区上获得40,它将绕过我的想法。我是用32位做的。

以下是代码:

#include <stdio.h>
#include <string.h>

int PasswordOkay() {
char GoodPassword='F';
char Password[8];
gets(Password);
if (!strcmp(Password , "SPOCKSUX"))
    GoodPassword = 'T';
return(GoodPassword == 'T');
}
int main(){
puts ( " Enter Password : ");
if(PasswordOkay())
    puts(" Hello , Dr . Bones . ");
else
    puts(" Access denied . ");
}

这里我有来自objdump的相关内容(我认为):

  80484e8:     call      8048380 <gets@plt>

  80484ed:     movl      $0x80485f0,0x4(%esp) 

和最后一行:

 804851c:     je         8048523 <PasswordOkay+0x56>

 804851e:    call       8048390 <__stack_chk_fail@plt>

 8048523:  leave  

 8048524:   ret 

对我如何计算(以及哪个位置)有帮助的一些帮助!

0 个答案:

没有答案