linux修改运行时进程变量,在Linux下程序运行时修改变量的值

1 #include

2 #include

3

4 void bug()

5 {

6      system("reboot");

7      exit(0);

8 }

9 int stack_test(int a,int b)

10 {

11         //int *p=&a;

12         // p--;

13         // *p=bug;

14         printf("before write : 0x%x\n", b);

15         int *p=&a;

16         p++;

17         *p=0xdddd;

18         printf("after write : 0x%x\n", b);

19         int c=0xcccc;

20         return c;

21 }

22 int main()

23 {

24         int a=0xaaaa;

25         int b=0xbbbb;

26         int ret=stack_test(a,b);

27         printf("you should run here\n");

28         return 0;

29  }

程序运行结果为:

before write:0xbbbb

after write: 0xdddd

you should run here

bug函数重启了系统;

b的值改变的原因:函数参数在进行压栈时自右向左,所以b在下a在上,指针p指向a ,p在进行++时便指向了b,所以改变指针p的值便改变了b的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值