level 7
#include <stdlib.h>
#include <stdio.h>
struct abc
{
int a;
void (*func)();
int b;
};
struct abc *new_aa();
struct abc *aa;
struct abc *bb;
void func()
{
asm("movl $15,(%edx)"); //改变 aa->a = 5; //但是没有成功!!
printf("I咯");
}
struct abc *new_aa()
{
struct abc *this;
this = (struct abc*)malloc(sizeof(struct abc));
this->func = func;
return this;
}
int main(int argc,char *argv[])
{
aa = new_aa();
bb = new_aa();
aa->a = 3;
asm("movl %eax,%edx"); //保存结构体 aa 指针的地址
aa->func();
printf("%d-%d\n", aa->a,bb->a);
return 0;
}
2011年10月26日 05点10分
1
#include <stdio.h>
struct abc
{
int a;
void (*func)();
int b;
};
struct abc *new_aa();
struct abc *aa;
struct abc *bb;
void func()
{
asm("movl $15,(%edx)"); //改变 aa->a = 5; //但是没有成功!!
printf("I咯");
}
struct abc *new_aa()
{
struct abc *this;
this = (struct abc*)malloc(sizeof(struct abc));
this->func = func;
return this;
}
int main(int argc,char *argv[])
{
aa = new_aa();
bb = new_aa();
aa->a = 3;
asm("movl %eax,%edx"); //保存结构体 aa 指针的地址
aa->func();
printf("%d-%d\n", aa->a,bb->a);
return 0;
}