[linux] Stack v C

Andrej Hosna adino na uid0.sk
Úterý Květen 2 20:59:48 CEST 2006


povedzme ze pri i386 linux architekture by to mohlo vyzerat takto
int main (void)
{
    // pozor vramci funkcie
    int prva_premenna_ukaze_zaciatok_stacku = 0;
    int a = 1;
    int b = 2;
    int * p;
    // ako mas moznosti vidiet nas stack rastie nadol   
    printf("%p %p %p\n", &prva_premenna_ukaze_zaciatok_stacku, &a, &b);
    // a potom sa s premennymi nanom vieme hrat jednoducho
    p = &prva_premenna_ukaze_zaciatok_stacku;
    *(p-2) = *(p-1);
    printf("a=%d b=%d\n", a, b);
}
// vystup
// 0xbfcc7564 0xbfcc7560 0xbfcc755c
// a=1 b=1

On Tuesday 02 May 2006 19:56, Peter Fodrek wrote:
> Zdravim!
>
> Prosim Vas o radu
> Brat dostal uloha pristupovat k premennym v C nie cez ich mena, ale cez ich
> poziciu na stack-u a zmanipulovat stack.  (cez int *=0x.....  cize cez
> adresu v RAM to viem, ale nejaky manual co by to robil cez stack som
> nenasiel- okrem mne nie velmi vyhovujuceho assembler-u cez pop a push)
>
> vie niekto ci sa to da aj inak ako cez
>
> asm
> {
> };
>
> ?
>
> S vdakou
>
> Peto...



Další informace o konferenci linux