2014-03-03 373 views
0

如何將函數的地址存儲在char *中,以便它溢出strcpy()返回地址以返回不同的函數。堆棧緩衝區溢出

如果你有一個函數:

void f() 
{ 
    printf("We made it"); 
    exit(0); 
} 
void main() 
{ 
    char *add; 
    //Do something like: add = &f; 
    char str[4] = "123"; 
    strcpy(str, add); 
    return 0; 
} 

從我的理解,所有你需要做的是通過使加大,並有中的F地址重寫)存儲的strcpy的呼叫(返回地址它。它是否正確?如何才能做到這一點?

回答